Review of the exam paper from last year.
The exam this year will have the same standard format: answer two out of three questions, in two hours, with all questions carrying equal weight.
Review of the exam paper from last year.
The exam this year will have the same standard format: answer two out of three questions, in two hours, with all questions carrying equal weight.
Three topics demonstrating challenges in concurrency. Complex lock manipulation: reentrant locks, nested locks, and fine-grained locking (hand-over-hand) with linked-lists.
Scheduling: thread priorities, pre-emption, the priority inversion problem and priority inheritance as a solution. Relaxed (aka weak) memory models: the Java Memory Model and its guarantees for programmers and compiler writers; examples of behaviours possible with racy programs.
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)