Asynchronous programming (Concurrency | Parallel)
About
Multi-thread (Multi User) application
Asynchronous programming is notoriously difficult because the order of operations is highly unpredictable.
From a classic computing perspective, concurrent and parallel are clearly synonyms but:
- concurrency is about data structure
- and parallel is about process
Two process can run in parallel without being concurrent on any data structure.
It takes 4 months to grow a tomato. Can you only grow 3 tomatoes a year ??
Parallel tasking is a concurrency design
The five functions of functional programming hold a key to simplifying asynchronous programming.
Model
Concurrency implementation is done:
- on a logical level through the notion of transaction.
- on a code process level through the notion of:
- or channel. No Shared State, communication using channel. See Concurrency - Communicating sequential processes (Tony Hoare’s CSP paper)
Documentation / Reference
- Transactional Data Structure Libraries - Alexander Spiegelman, Guy Golan-Gueta, Idit Keidar. Transactions into libraries of concurrent data structures; such transactions can be used to ensure atomicity of sequences of data structure operations