[Theory – 0.5h] Threads and processes. Concurrency, parallelism, and multithreading
How multitasking is implemented in modern operating systems. What is the difference between parallel and concurrent program execution
[Theory – 0.5h; Practice – 0.5h] Thread creation and interrupting
How to create threads of execution, basic methods of communication between threads
[Theory - 1h] Data races, deadlocks, bottlenecks.
What difficulties usually arise in writing multithreading code, and what problems can they lead to
[Theory – 1h; Practice – 0.5h] Synchronization: semaphores, mutexes and conditional variables.
Synchronizing access to shared resources with various synchronization primitives
[Theory – 3h; Practice - 6h] Classical tasks: reader-writer, producer-consumer, dining philosophers
Common tasks of multithreading programming in examples based on classical problems
[Theory – 1h; Practice – 0.5h] Atomic data types, memory model, lock-free algorithms
How to provide synchronization without mutexes. Atomic operations and memory model
[Theory – 0.5h; Practice - 1h] Thread pools.
Multithreading does not always guarantee high performance. In certain cases, additional solutions are required, such as thread pools.
[Theory – 7.5h (47%); Practice – 8.5h (53%)]