PPLS: Further Reading
(The Previously Recorded Lectures page gives guidance on which reading is related to which lecture.)
The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software is an interesting background article on the march of parallelism into the mainstream.
Parallel Computing with Patterns and Frameworks and Structured Parallel Programming with Deterministic Patterns discuss the growing importance of patterns in parallel programming.
Monitors: an operating system concept is one of the original papers on monitors, C. A. R. Hoare, Communications of the ACM, 17(10), 1974.
A New Solution of Dijkstra's Concurrent Programming Problem is the original bakery algorithm paper, Leslie Lamport, CACM 17(8), 1974.
Algorithms for scalable synchronization on shared-memory multiprocessors is discusses a range of lock and barrier implementations, including test-and-test-and set locks (section 2.1) and sense-reversing (section 3.1) and dissemination barriers (section 3.3). J. Mellor-Crummey and M. Scott ACM Transactions on Computer Systems (TOCS) 9(1), 1991.
Two algorithms for barrier synchronization has a good discussion of symmetric barriers (where they are called "Brooks Barrier" in section 2.2) and dissemination barriers (in section 2.4). Hensgen, Finkel and Manber, International Journal of Parallel Programming, Vol. 17, No. 1, 1988.
Semaphores is a nice tutorial on semaphores from Oracle.
A tutorial on Pthreads programming by Blaise M. Barney
Some Java threads tutorials (or google for lots of others)
Definition of the Java Memory Model (not examinable)
The OpenMPI homepage including documentation.
A chapter on MPI from Ian Foster's online book Designing and Building Parallel Programs.
Peter Pacheco's Guide to MPI.
A Threading Building Blocks tutorial.
Pro TBB: C++ Parallel Programming with Threading Building Blocks, by M. Voss, R. Asenjo and J. Reinders, Springer 2019. An open-access guide to TBB from Intel.
Threading Building Blocks Open Source site and documentation.
The Fibonacci example from lectures in which the task graph is constructed directly is taken from this paper by Gonzalez and Fraguela.
The paper Linda in Context by Carriero and Gelernter, Communications of the ACM, 32(4), pages 444-458, 1989.
The Linda Alternative to Message Passing Systems by Carriero et al, Parallel Computing 20, pages 633-655, 1994.
New to C? Get some advice on C or play around with my C demo program.