Concurrency
Concurrency is the composition of independently executing computations. Real-Time Interrupt-driven Concurrency is a great read.
Go concurrency model is great.
Notes
- Race condition occurs when two or more threads can access shared data and they try to change it at the same time.
- Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. It doesn't necessarily mean they'll ever both be running at the same instant. For example, multitasking on a single-core machine.
- Concurrency is not Parallelism. Concurrency enables making progress on many tasks, without having to run A to completion to start work on B. Parallelism is actually running A and B simultaneously.
Links
- The Deadlock Empire - Interactive exercises.
- Structured Concurrency
- A Separation Logic for Concurrent Randomized Programs
- Lock-free programming for the masses (2016)
- CspExamples.jl - Julia implementations for the Example problems in Hoare's 1978 paper, "Communicating Sequential Processes".
- I'm not feeling the async pressure (2020) (Lobsters)
- A (brief) retrospective on transactional memory (2010)
- Concurrent programming, with examples (2020) (HN)
- Deterministic Parallel Fixpoint Computation (2019)
- Fearless concurrency: how Clojure, Rust, Pony, Erlang and Dart let you achieve that. (2019) (HN)
- A Concurrency Cost Hierarchy (2020)
- Lockless Algorithms for Mere Mortals (HN)
- Structured Concurrency (2020) (HN)
- Why Concurrency Is Hard (2020) (HN)
- SOMns - Dynamic, class-based, object-oriented language in the tradition of Smalltalk and Self. Newspeak for Concurrency Research.
- Concurrency Kit - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures for the research, design and implementation of high performance concurrent systems. (Code)
- Lock-free vs. wait-free concurrency (2010)
- Concurrent Expression Problem (2021)
- The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software (2005) (HN)
- What is structured concurrency? (2021) (Lobsters)
- Advanced Topics in Concurrency Course (2020)
- Syndicated Actors for Conversational Concurrency (Lobsters)
- Concepts of Concurrency (1997)
- On parallelism and concurrency (2021)
- KAIST Concurrency and Parallelism Laboratory (GitHub)
- Concurrency in modern programming languages (Code)
- Communicating Sequential Processes (CSP) (1978) (PDF) (Go Code)
- Seamless, Fearless, and Structured Concurrency (2022)
- Resources on concurrent PL semantics? (2022)
- KAIST CS431: Concurrent Programming
- Structured Concurrency (HN)
- Structured (Synchronous) Concurrency
- A Flexible Type System for Fearless Concurrency (2022) (Reddit)
- Exponential Backoff And Jitter (2022)
- Fearless concurrency at a discount? (2022)
- Notes on concurrency bugs (2016) (HN)
- Handling Concurrency Without Locks (2022) (Lobsters)
- Concurrent approaches to concurrency (2020)
- Uniqueness and Reference Immutability for Safe Parallelism (2012)
- Race Conditions Can Be Useful for Parallelism (2022)
- Who controls parallelism? A disagreement that leads to slower code (2022)
- Higher-Order Leak and Deadlock Free Locks (2022)
- Concurrency Deep Dive: Code Strategies for High Traffic Applications (2022)
- Structured Concurrency Definition (2019)
- Is Parallel Programming Hard, And, If So, What Can You Do About It? (2022)
- Polyjuice: High-Performance Transactions via Learned Concurrency Control (2023)
- Real-Time Interrupt-driven Concurrency
- Tips for concurrent programming
- Tree-Structured Concurrency (2023) (HN)
- Goroutines: the concurrency model we wanted all along (2023) (HN)
- Storing Data in Control Flow (2023) (HN) (Lobsters)