Concurrency mechanisms as ways of providing multiple processes and controlling separation (to ensure non-interference) and co-operation (to allow communication). Synchronous and asynchronous message passing. Actors in Scala, with asynchronous messaging; thread-based and event-based actors. Polyphonic C# with message passing and synchronization integrated into method dispatch; defining chords with asynchronous and synchronous methods.
(recommended reading and references to follow)