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 Problems
- Hardware platform limitations - hardware threads, pipelines, cache coherence
- Fundamental concepts related to multithreaded programming (correctness of multithreaded programs, liveness, livelock, deadlock, race conditions, atomicity, memory 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)
- Implementation available in Boost - differences compared to the standard library
Processes and Threads
- Multiprocess and multithreaded applications
- Operating system and threads (brief overview of available implementations)
- Process and thread synchronization mechanisms
- Structural implementation of synchronization
- Specifics of multithreading implementation in an object-oriented approach (role of the RAII pattern)
Memory Model in C++
- Objects and memory locations
- Operation scheduling and enforcement
- Relationships: synchronization, precedence, ordering of operations for atomic actions, release sequences
- Memory barriers
- Atomic operations
Thread Management in C++14 and Later
- std::thread class and thread execution
- Thread identification
- Thread joining and detachment
- Threads and standard containers
- Exception handling in C++14 threads
Mutual Exclusion and Critical Sections
- Basic principles 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)
- Deferred and dependent locks (std::lock)
- Lock and thread ownership
- Readers-writers problem
- One-time initialization
- Thread-local (private) memory (std::thread_local)
Thread Locking and 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)
- Thread resumption
- Inter-thread communication (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)
- Class template "std::atomic<T>" and its specializations
- Utility functions (free functions) for std::atomic types
Specifics of Multithreaded API Design
- Designing structures using locks - coarse- and fine-grained locks
- Concurrency code efficiency - estimation and measurement techniques
- Data partitioning
- Scalability of solutions
- Error and exception handling in application architecture
Testing and Debugging Multithreaded Applications
- Code reviews for multithreaded operations
- Specifics of testing multithreaded applications
- Unit tests
- Increasing the probability of failure situations for testing
- Formal methods for testing multithreaded applications
- Multithreaded application architecture patterns and testing/debugging (overview)
Advanced Thread Management
- Dependent threads (Saga pattern)
- Avoiding data access contention
- Controlled thread stopping and interruption
- Interrupting blocking calls
- Interrupt handling
- Work stealing
- Interrupting tasks during application shutdown
Multithreaded Design Patterns
- Types and purposes of multithreaded patterns
- Application scope of patterns
- Thread Pool
- Active Object pattern
- Thread Safe Queue
- Producer-Consumer pattern
- Monitor pattern
- Multithreaded safety of GoF patterns
Requirements
- Ability to use C++ software building tools in a GNU/Linux and/or MS Windows environment
- Knowledge of C++ programming topics (both procedural and object-oriented paradigms) at an intermediate to advanced level
- Knowledge of generic code creation topics (templates)
Select an available course date
- Format Online
- Language Polish
- Course Public course
- Start Date 2027-01-18
- Duration 4 days (28 hours)
BOOK - 1050 EUR
Net price per participant
Testimonials (1)
Practical examples