Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Duration 28 hours
Course Outline
Challenges and concurrency issues
- Platform hardware limitations - hardware threads, pipelines, memory cache coherence
- Basic concepts related to multithreading (correctness of a multithreaded program, liveness, deadlock, livelock, race conditions, atomicity, consistency models, Flynn's taxonomy)
- Available mechanisms in C++ for implementing multithreading and multiprocessing
- Standard library implementation - elements from C++14 to the present day (C++2a)
- Boost implementation - differences compared to the standard library
Processes and threads
- Multiprocess vs multithread applications
- Operating system and threads (brief overview of available implementations)
- Process and thread synchronization mechanisms
- Structural implementation of synchronization
- Specifics of multithreading implementation in object-oriented approaches (role of the RAII pattern)
Memory model in C++
- Objects and memory locations
- Operation ordering and enforcement
- Relations: synchronization, precedence, operation ordering for atomic actions, release sequences
- Memory barriers
- Atomic operations
Thread management in C++14 and newer standards
- std::thread class and thread launch
- Thread identification
- Detaching and joining threads
- Threads and standard containers
- Exception handling in C++14 threads
Mutual exclusion and critical sections
- Basic rules of mutual exclusion
- Concepts (types) of available blocking objects
- Quick introduction to time handling in C++14 (chrono library)
- std::mutex, std::timed_mutex, std::shared_mutex classes and derivatives
- RAII pattern in lock handling (std::lock_guard, std::unique_lock)
- Dependent and deferred locks (std::lock)
- Ownership and co-ownership of locks and threads
- Reader-writer problem
- One-time initialization
- Thread-local (private) memory (std::thread_local)
Locks and thread synchronization
- Semaphore operations
- Recursive locks
- Locks with defined locking levels
- Decision variables and cooperation with locks
- Implementation of active and passive barriers (Idle Waits, Busy Waits)
- Resuming thread execution
- Communication between threads (Actor and CSP models)
Asynchronous tasks
- Asynchronous events and their handling
- Futures
- Promises
- Packaged tasks
Atomic types
- Standard atomic types
- Universal atomic flag (std::atomic_flag)
- "std::atomic<T>" class template and its specializations
- Utility functions (free) of std::atomic types
Specifics of designing multithreaded APIs
- Designing structures using locks - coarse and fine-grained locks
- Concurrency code performance - estimation and measurement techniques
- Data partitioning
- Scalability of solutions
- Error handling and exceptional situations in application architecture
Testing and debugging multithreaded applications
- Code reviews for multithreaded operations
- Specifics of testing multithreaded applications
- Unit testing
- Increasing the likelihood of failure scenarios for testing purposes
- Formal methods for testing multithreaded applications
- Multithreaded application architecture patterns regarding testing and debugging (overview)
Advanced thread management
- Dependent threads (Saga pattern)
- Avoiding data contention
- Controlled thread termination and interruption
- Interrupting blocking calls
- Handling interrupts
- Work stealing
- Task interruption during application shutdown
Multithreading design patterns
- Types and purposes of multithreading patterns
- Pattern application scope
- Thread Pool
- Active Object pattern
- Thread Safe Queue
- Producer-Consumer pattern
- Monitor pattern
- Multithreading safety of GoF patterns
Requirements
- Ability to use software building tools in C++ in a GNU/Linux and/or MS Windows environment
- Knowledge of C++ programming concepts (procedural and object-oriented paradigms) at an advanced and upper-intermediate level
- Knowledge of generalized code creation concepts (templates)
Testimonials (1)
Practical examples