Trudno obecnie o nietrywialną aplikację nie korzystającą w żaden sposób ze współbieżności. Nietrywialne aplikacje systemowe, jak i wszelkie rozwiązania na styku aplikacji z systemem operacyjnym (sterowniki, biblioteki) wymagają uwzględnienia interakcji między poszczególnymi procesami i odpowiedniej ich synchronizacji. Wiele aplikacji, nie wyłączając zwykłych aplikacji użytkowych, dla wygody i dla wykorzystania w pełni mocy wieloprocesorowych maszyn projektuje się z kolei jako aplikacje wielowątkowe. Naturalne jest też, że programy komunikują się miedzy sobą przez sieć albo używając innych mechanizmów. Dla wszystkich tych zastosowań istnieją pewne zasady poprawnego programowania, które przenoszą się na dowolne platformy i technologie.
System UNIX był od początku projektowany jako system wieloprocesowy i jest pierwszym szeroko stosowanym systemem tego typu. Obecnie wiele systemów opartych o UNIX-a, w tym Linux, pozwala korzystać z ukształtowanych przez lata rozwoju tej rodziny systemów mechanizmów komunikacji i synchronizacji międzyprocesowej (IPC – inter-process communication). Wątki w systemie UNIX i pochodnych pojawiły się później. Spośród dostępnych bibliotek pozwalających korzystać z wątków najbardziej popularną dla czystego języka C jest pthreads.
Szkolenie, prowadzone na platformie Linux, obejmuje te mechanizmy programowania współbieżnego, które są obecnie uważane za standardowe i są przenośne między różnymi wersjami systemów opartych o UNIX. Gdzie możliwe, opieramy się o standard POSIX. Omawiane są także podstawowe zasady poprawnego programowania współbieżnego, a także typowe błędy i zagrożenia. Prezentowane jest podstawowe API mechanizmów, dostępne z języka C i korzystające bezpośrednio z odpowiednich zasobów i funkcji systemowych. Używanie ich w ten sposób daje największą przenośność rozwiązań i największą kontrolę nad szczegółami.
Po zakończeniu szkolenia aktywny uczestnik potrafi:
Szkolenie nie obejmuje m.in. następujących tematów:
Adresatami szkolenia są programiści pragnący poznać mechanizmy systemu UNIX (i pochodnych, np. Linux) służące do realizacji wieloprocesowości i wielowątkowości.
Szkolenie polecamy przede wszystkim programistom przygotowującym się do pracy w projektach wymagających skorzystania z technologii będących przedmiotem szkolenia. Może ono być także kolejnym krokiem w naturalnym rozwoju programisty języka C platformy UNIX, który pozwoli lepiej rozumieć i w większym stopniu wykorzystywać możliwości systemu (polecamy w tym miejscu cykl szkoleń C-PD → C-IPC → C-TCP).
Technologie prezentowane na szkoleniu można potraktować dosłownie i korzystać z nich bezpośrednio w pracy pod systemem UNIX/Linux lub tylko jako przykładową realizację mechanizmów IPC, które w innych systemach (np. Windows, Android) są podobne w idei, ale różne jeśli chodzi o szczegóły i API.
Wymagania wstępne:
Wiedza i umiejętności, które mogą podnieść efektywność tego szkolenia:
21 godzin (3 dni x 7 godzin), w tym wykłady i warsztaty praktyczne.