Opis szkolenia:
W trakcie szkolenia omawiane są zagadnienia dotyczące programowanie współbieżnego w języku C++ z wykorzystaniem biblioteki Boost.Thread. Uczestnicy szkolenia zapoznają się z metodami tworzenia, łączenia oraz kończenia wątków. Szczegółowo prezentowane są również sposoby synchronizacji wątków przy dostępie do zasobów współdzielonych (muteksy, zmienne warunkowe, itp.). Prezentowane jest również tworzenie bezpiecznych wielowątkowo (thread-safe) struktur danych: stosów, kolejek oraz kolekcji.
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 boost::thread
- Tworzenie i uruchamianie zadań w osobnych wątkach
- Przekazywanie parametrów startowych do wątku
- Łączenie wątków
- Odłączanie wątków
- Przerywanie wątków
- Grupy wątków - klasa boost::thread_group
- Wątki sprzętowe
- Implementacja współbieżnych wersji algorytmów standardowych
Synchronizacja wątków
- Muteksy - klasy boost::mutex, boost::recursive_mutex, boost::try_mutex oraz boost::timed_mutex
- Blokady - klasy boost::lock_guard<> oraz boost::unique_lock<>
- Implementacja stosu bezpiecznego wielowątkowego - ThreadSafeStack<>
- Unikanie zakleszczeń - funkcje blokujące boost::lock()
- Blokady współdzielone - implementacja problemów typu readers-writers
- Blokady warunkowe i mechanizmy komunikacji między wątkami - klasy boost::condition_variable oraz boost::condition_variable_any
- Implementacja klasy ThreadSafeQueue oraz wzorca Producer-Consumer
- Jednokrotna inicjalizacja - implementacja wzorców Singleton<> oraz Virtual Proxy
- Bariery
Funkcje wywoływane asynchronicznie
- Wywołania asynchroniczne funkcji z wykorzystaniem biblioteki Boost.Thread
- Uruchamianie zadań asynchronicznych - klasa boost::packaged_task<>
- Odczytywanie wyników zwracanych przez funkcje asynchroniczne - obiekty typu "future", klasy boost::unique_future<> oraz boost::shared_future<>
- Mechanizm komunikacji między wątkami za pomocą klasy boost::promise<>
Lokalna pamięć wątku
- Pamięć Thread Local Storage i jej wykorzystanie w bibliotece Boost.Thread
- Klasa thread_specific_ptr
Programowanie współbieżne w nowym standardzie języka C++ 0X
Czas trwania szkolenia:
3 dni po 8 godzin lekcyjnych