Introduction - Shared Objects and Synchronization, A Fable, Properties of Mutual Exclusion, The Moral, The Producer–Consumer Problem, The Harsh Realities of Parallelization.
Mutual Exclusion - Time, Critical Sections, 2-Thread Solutions, The Peterson Lock, The Filter Lock, Lamport’s Bakery Algorithm.
Concurrent Objects -
Concurrency and Correctness, Sequential Objects, Quiescent consistency, Sequential Consistency, Linearizability, Linearization Points, Formal Definitions Linearizability, Compositional Linearizability, The Nonblocking Property, Progress conditions, Dependent Progress Conditions, The Java Memory Model, Locks and synchronized Blocks, Volatile Fields, Final Fields.
Synchronization Operations, Consensus Numbers, Consensus Protocols, The compareAndSet() Operation, Introduction Universality, A Lock-Free Universal, Construction Wait- Free Universal Construction, Spin Locks , Test-And-Set Locks
Linked Lists:
The Role of Locking, Introduction, List-Based Sets, Concurrent Reasoning, Coarse- Grained Synchronization, Fine-Grained Synchronization, Optimistic Synchronization, Lazy Synchronization, Non-Blocking Synchronization
Concurrent Queues and the ABA Problem, Concurrent Stacks and Elimination, Transactional Memories
TEXT BOOKS:
1. The Art of Multiprocessor Programming, by Maurice Herlihy and Nir Shavit, Morgan Kaufmman Publishers, 1st Edition, Indian Reprint 2012.
REFERENCE BOOKS:
1. Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Block, Joseph Bowbeer, David Holmes and Doug Lea, Addison Wesley, 1st Edition, 2006.
2. Concurrent Programming in Java™: Design Principles and Patterns, Second Edition by Doug Lea, Publisher: Addison Wesley, Pub Date: October 01, 1999.
Course Outcomes:
1. Ability to implement the mechanisms for communication and co-ordination among concurrent processes.
2. Ability to understand and reason about concurrency and concurrent objects
3. Ability to implement the locking and non-blocking mechanisms
4. Ability to understand concurrent objects