Programowanie wielowątkowe w języku C++

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

Wycena szkolenia zamkniętego

Szkolenie zamknięte jest prowadzone w siedzibie Klienta.
Klient zobowiązuje się zapewnić salę szkoleniową wyposażoną w odpowiednią liczbę stanowisk komputerowych oraz rzutnik multimedialny:

Liczebność grupy:    
Miasto: