Mohsen Lesani presented today a talk on his concurrency project using scala. He gave a great introduction on the different concurrency control mechanisms:
- Locks
- STM
- Actors
- Wait-free algorithms
To compare them he implemented two different problems: Bank account transfer and Producer & Consumer. The former shows a clear isolation problem while the later poses a signaling issue. With these simple problems we can already see that there is no silver bullet in concurrent programming, i.e. no single technique can easily implement both problems and yield good performance at the same time.
For me it was interesting to discover that STMs lack signaling capabilities, after the presentation I talked to Mohsen and proposed that the signaling could maybe be done at the end of an atomic block (although I don't know how a thread could wait inside an atomic region).
You can see the presentation below.