Programowanie wielowątkowe w języku C++
Cele szkolenia
Uczestnicy szkolenia nauczą się:
- tworzyć, łączyć oraz kończyć wątki
- synchronizować dostęp do współdzielonych zasobów (muteksy, zmienne warunkowe, zmienne atomowe, itp.)
- wyłapywać i unikać błędów, takich jak race condition, deadlock, itp.
- tworzyć bezpieczne wielowątkowo struktury danych (thread-safe queue) i wykorzystać je do implementacji wzorca Producer-Consumer
- implementować wzorce projektowe Thread Pool i Active Object
Plan szkolenia
Wprowadzenie do programowanie współbieżnego
- Procesy oraz wątki
- Podstawowe pojęcia: poprawność programu, wyścig, wzajemne wykluczenie, żywotność, zagłodzenie wątków, zakleszczenie
Zarządzanie wątkami
- Klasa
std::thread
- Tworzenie i uruchamianie zadań w osobnych wątkach
- Łączenie i odłączanie wątków - implementacja RAII dla wątków
- Grupowanie wątków - przechowywanie wątków w kontenerach standardowych
- Wątki sprzętowe
- Bezpieczna obsługa wyjątków w wątkach -
std::exception_ptr
Synchronizacja wątków - muteksy
- Koncepty obiektów blokowalnych
- Muteksy w bibliotece standardowej
- Klasy
std::mutex
,std::timed_mutex
,std::shared_mutex
- Wersje rekursywne muteksów
- Klasy
- Zarządzanie blokadami - klasy
std::lock_guard<Mutex>
orazstd::unique_lock<Mutex>
- Synchronizacja dostępu do obiektów za pomocą muteksów
- Unikanie zakleszczeń - funkcja
std::lock()
- Blokady współdzielone - implementacja problemów typu readers-writers
Synchronizacja zdarzeń między wątkami
- Mechanizmy komunikacji między wątkami
- Busy waits - zmienne atomowe
- Idle waits - zmienne warunkowe - klasa
std::condition_variable
- Implementacja klasy ThreadSafeQueue oraz wzorca Producer-Consumer
Leniwa inicjalizacja obiektów
- Jednokrotna inicjalizacja - implementacja thread-safe wzorców Singleton oraz Virtual Proxy
Wstęp do typów atomowych
- Klasa
std::atomic<T>
- Semantyka Acquire-Release operacji synchronizujących
- Model pamięci w C++11
- Algorytmy i struktury danych lock-free - wstęp
Funkcje wywoływane asynchronicznie
- Wywołania asynchroniczne funkcji z wykorzystaniem biblioteki standardowej -
std::async()
- Uruchamianie zadań asynchronicznych - klasa
std::packaged_task
- Odczytywanie wyników zwracanych przez funkcje asynchroniczne - obiekty typu
future
- Mechanizm komunikacji między wątkami za pomocą klasy
std::promise
Podstawowe wzorce programowania współbieżnego
- Thread Pool
- Active Object
Wymagania
Opanowane tematy ze szkolenia Programowanie w języku C++.
Czas trwania
3 dni po 8 godzin lekcyjnychWycena szkolenia zamkniętego
Szkolenie zamknięte w siedzibie Klienta.
Klient zapewnia salę szkoleniową i sprzęt.
Zapytaj o termin i cenęTerminy szkoleń otwartych
zdalne 16-18.12.2024 |
3490 PLN | Zgłoś udział |
Zdalne 10-12.2.2025 |
3490 PLN | Zgłoś udział |
Pasuje Ci inny termin?
Wyślij zapytanie