Didn't do much ;)
FAQ
I will add frequently asked questions here
Useful Resources
Weekly Session Recaps
Here you will find my slides, notes, and any additional resources we've looked at during our exercise session.
Didn't do much ;)
First I gave a short motivation on why parallel programming is **really** important. Then we had a long theory recap on Threads: What are threads? How to create threads? What states can threads be in and what is the bigger picture? Next we briefely looked at (bad) interleavings and prepared ourselves for assignment 2. In the end we played a quick quiz as well.
First we discussed common mistakes in assignment 2. Next week we looked at: `synchronized` and wait/notify in Java. Of course we also play a quick quiz and had a pre-discussion for assignment 3 (we briefely discussed AtomicInteger).
This week we looked at: wait/notify, pipelining, and work partitioning & scheduling
This week we looked at: Divide and Conquer, ExecutorService, and ForkJoin
This week we looked at: Amdahl's Law and Gustafson's Law, Task Graphs, Divide and Conquer with ForkJoin, and Locks
This week we looked at: Threads, External Locks, Synchronization and Monitors, Pipelines, Divide and Conquer, and ExecutorService
This week we looked at: Memory Reordering, Java Memory Model, State Space Diagrams, Decker's Algorithm, and Peterson Lock
This week we looked at: Java Memory Model, Filter Lock, Bakery Lock, Atomic Registers and Atomic (RMW) Operations, Caches and why TAS Spinlock scales horribly. Semaphores are on the slides but were only covered the week after.
This week we looked at: Semaphores, Rendez-vous, Barriers, Conditions and Monitors, and the Sleeping Barber Problem (Producer-Consumer Problem).
This week we looked at: Thread-safe linked list using various synchronization techniques such as: Coarse-grained locking, Hand-over-hand locking, Optimistic Synchronization, and Lazy Synchronization. At the very end we quickly looked at a lock-free tack datastructure.