Useful Links
Computer Science
Programming
Concurrent and Parallel Programming
1. Introduction to Concurrent and Parallel Computing
2. Fundamental Concepts
3. Synchronization Primitives
4. Concurrency Models and Patterns
5. Parallel Programming Concepts
6. Parallel Programming Patterns and Algorithms
7. Advanced Topics
8. Language and Library Support
Synchronization Primitives
The Need for Synchronization
Protecting Critical Sections
Ensuring Atomicity
Ensuring Ordering
Preventing Data Races
Locks and Mutexes
Mutual Exclusion Principle
Lock Acquisition
Lock Release
Types of Locks
Spinlocks
Reentrant Locks
Reader-Writer Locks
Lock Contention and Performance
Deadlock Risks with Locks
Semaphores
Counting Semaphores
Binary Semaphores
Semaphore Operations
Wait Operation
Signal Operation
Producer-Consumer Problem Solution
Semaphore Limitations
Semaphore Pitfalls
Monitors
High-Level Synchronization Construct
Encapsulating Shared Data
Encapsulating Procedures
Implicit Mutual Exclusion
Condition Variables Within Monitors
Condition Variables
Waiting for Specific Conditions
Signaling
Broadcasting
Spurious Wakeups
Usage with Mutex
Producer-Consumer Example
Atomic Operations
Hardware-Level Atomicity Guarantees
Types of Atomic Operations
Compare-and-Swap
Fetch-and-Add
Test-and-Set
Use in Lock-Free Programming
Atomic Operation Limitations
Hardware Support Requirements
Barriers
Synchronizing Thread Groups at Points
Use Cases in Parallel Algorithms
Barrier Implementation Strategies
Previous
2. Fundamental Concepts
Go to top
Next
4. Concurrency Models and Patterns