C++ – Threads, Coroutines and Asynchronous I/O (CPP4)
Programming, C, C++
Since C++11 the standard adds support for OS threads, a model for multithreaded programs and basic synchronization. This lets you build portable code with parallel computation, concurrent I/O and reliable synchronization across different platforms.
From C++20 the standard library adds many synchronization utilities and native coroutines, enabling lightweight cooperative tasks. C++26 adds tools for lock-free algorithms and data structures. The course covers Boost.Asio where needed.
THIS TRAINING COURSE WILL HELP YOU:
- Understand C++ memory model for applications on multiple hardware threads
- Learn synchronization tools for shared-memory data access
- Understand coroutines and apply them in practical projects
- Practice threads and coroutines using external libraries
WHO SHOULD ATTEND?
- Software developers working on production projects
- Programmers working with threads and coroutines
- Engineers interested in multi-CPU programming
- Developers who want to compare C++ with other environments
COURSE LOCATION AND AVAILABLE DATES
Need this course in English?
Public courses are usually delivered in Czech, but this course is also available in English. We can arrange private training for your team online, at your premises or in our classrooms, and tailor the content to your needs.
For groups of around 4 or more participants, private training can already be comparable in price to booking individual places on a public course. Send us your requirements and we’ll recommend the best format and provide an exact quote.
Request training in English
Course content:
Hide details
-
Parallel programming in C++
-
Multithreading and multiprocessing
-
Coroutines and in-process scheduling
-
Synchronizing access to resources
-
Multithreaded data model
-
What can go wrong (undefined behavior)
-
When the language actually guarantees behavior
-
How to write correct parallel programs
-
Working with threads in C++
-
Starting and stopping threads
-
Waiting for thread completion
-
Main-thread termination and destructors
-
Classic thread synchronization
-
Locking shared data (mutex)
-
Notification via condition variables
-
Mutex performance in operating systems
-
Advanced synchronization tools
-
Signaling with semaphores
-
Other utilities (barrier, latch)
-
Futures and asynchronous execution
-
Object representing a future value (future)
-
Producer-side promise (promise)
-
Running functions in background threads (std::async)
-
Atomic variables and operations
-
Visibility of memory changes
-
Hardware and operation ordering (memory order)
-
Atomic ops and correct programs
-
Lock-free data structures
-
Using atomic operations (CAS)
-
Algorithmic properties (lock-free, wait-free)
-
The ABA problem
-
From custom implementations to C++26 and beyond
-
Data-structure updates via copy methods (RCU)
-
Support for pointer tagging (hazard pointers)
-
Bonus: transactional memory
-
Practical thread applications
-
Communication over TCP/IP
-
Applications on top of HTTP
-
Using existing thread pools
-
Asynchronous calls via callbacks
-
Scheduling actions with callbacks
-
Typed action objects (lambdas, captures)
-
The senders/receivers concept
-
Coroutines and asynchronous I/O
-
Motivation for using coroutines
-
External libraries with schedulers
-
Possible impacts in embedded systems
-
Principles of asynchronous I/O
-
Integrating scheduler and I/O
-
Computation versus communication
-
Interaction with multithreading
-
Asynchronous network communication
-
TCP/IP communication
-
HTTP server and client
-
Concurrency with other operations
-
Embedded systems and hardware I/O
-
Serial line communication
-
Local communication channels
-
OS interaction
-
Compute threads and coroutines
-
Coroutines focused on I/O work
-
CPU-bound versus I/O-bound tasks
-
Combining threads and coroutines
-
Prerequisites:
-
Good knowledge of C++ programming.
-
Recommended previous course:
-
C++ – Practical Programming for Advanced Developers (CPP2)
-
Schedule:
-
4 days (9:00-17:00)
Training and learning environment
What does the environment for in-person IT courses look like?We hold training courses in our own classrooms equipped with modern computer equipment for each participant and a large projection screen. Each workstation is fitted with a powerful computer for seamless practical exercises, and the environment supports a calm, friendly atmosphere during training.
Do I need to bring my own laptop to the classroom IT course?Our training rooms are fully equipped, so you do not need to bring your own laptop. A modern computer with all necessary hardware and software is ready for you at your workstation.
Will you receive an official certificate after completing an IT course?Yes, upon successful completion of the training course, you will receive an official ICT Pro certificate confirming your participation and acquired technical skills. You can use it to verify your qualifications or add it to your professional profile.
Where can you find our training center in Brno?The premises of the ICT Pro training center are located on the 1st floor of the COMGUARD building at Sochorova 38 in Brno. Positioned on the border of Žabovřesky and Komín, the location is easily accessible by both car and public transport.
Where can you find our training center in Prague?The premises of the ICT Pro training center are located on the 1st floor of the Opatov Park building at Líbalova 1, Prague 11 – Chodov. The location provides a comfortable environment for your education with convenient access.
What facilities and refreshments are available to you during training breaks?Our training centers feature a fully equipped kitchenette for a comfortable break during your courses. The facilities include a coffee machine, microwave, kettle, and a wide selection of drinks and snacks.
What beverage refreshments are available during your course?A beverage station with a coffee machine, teas, syrups, and water is at your disposal throughout the entire training session. You can enjoy a coffee or another drink of your choice anytime during breaks.
What light refreshments are provided for you during the courses?During course breaks, participants can enjoy light sweet snacks, pastries, and fruit syrups to mix their own drinks. Fresh water dispenser and plates are also available for your convenience.
Should I bring my own snacks to ICT Pro training?There is no need to. A wide selection of savory snacks, sweet biscuits, and snack bars is available for you during breaks. Boost your energy for all-day focus right inside the training center premises.
Can you spend training breaks in the fresh air?Yes, an outdoor terrace is available at our training center. During breaks between learning sessions, you can relax in the fresh air in a pleasant green environment.
Where can you relax during course breaks?Our training center features a spacious outdoor terrace with seating options. During breaks between learning sessions, you can step outside to relax and recharge in the fresh air.