|
Concurrent and Distributed Programming and Systems 2023/2024
Wednesday 13:10 M.213
The evaluation of work during the semester (homeworks) forms 50% of the
final grade, at least 40% are required.
- Motivation. Separation of algorithmic and concurrent aspects in C.
Memory and time complexity of programs with I/O operations and dynamic
memory allocation. Polling and its consequences.
Historical
recommendation (when to use threads and when not, 1995)
- Threads. Thread state diagram. Shared variables, atomicity of memory
accesses, critical regions. Decker's and Peterson's algorithms, assumptions
on memory accesses.
Lecture notes
- Threads in Java. Creation of a thread. Synchronised methods,
synchronised blocks. Built-in reentrant mutexes, built-in condition
variables. Methods join(), wait(), signal(). Problem with a direct use of
synchronised methods.
SCJP
Sun Certified Programmer for Java (Chapter 9)
H.
Schildt: Java, The Complete Reference (Chapter 11)
- Multi-level memory. Instruction cache, data cache. Examples of
counter-intuitive behaviour of programs and their explanation.
Means of memory synchronisation in C and Java. Volatile variables, implicit
memory synchronisation.
H. Boehm: Threads cannot be
implemented as a library, ACM PLDI, 2005
Java memory model
(JSR133)
"Double-checked locking" in Java
- Libraries, thread-safety.
Lecture notes
Case
study: shared stack
- OpenMP. Fork-join parallelism. Architecture of OpenMP:
Specification of OpenMP
GOMP (GNU OpenMP)
Introduction
to OpenMP (University of Oregon)
Homeworks
Updated by
Tomas Plachetka,
Dec/8/2023
|