POSIX Threads
POSIX Threads (wątki POSIX, pthreads) – specyfikacja wchodząca w skład standardu POSIX określająca implementację wielowątkowości, która obejmuje podstawowe mechanizmy zarządzania wątkami, obiektami synchronizującymi oraz definiuje jednolity interfejs programistyczny dla języka C. Standard definiuje pewien podstawowy zestaw funkcji oraz szereg opcji, które mogą być udostępnione przez implementację.
Standard ten jest bardzo dobrze rozpowszechniony wśród systemów rodziny Unix (dystrybucje Linuksa, FreeBSD, itp.). Istnieje również nieoficjalna implementacja na platformę Microsoft Windows.
Opis biblioteki
Interfejs programistyczny (API) zaprojektowano obiektowo, ponadto nazewnictwo funkcji, kolejność argumentów, nazwy typów danych i stałych, sposób sygnalizacji błędów są bardzo konsekwentne.
Podstawowe funkcje:
- tworzenie wątków,
- synchroniczne kończenie wątków,
- asynchroniczne kończenie wątków (sygnał do zakończenia wysyła inny wątek),
- lokalne dane wątku,
- stos funkcji finalizujących (cleanup) ułatwiający zarządzanie zasobami w języku C.
Mechanizmy synchronizacji międzywątkowej:
- mutexy,
- zmienne warunkowe,
- oczekiwanie na zakończenie wskazanego wątku.
Ważniejsze opcje standardu:
- dodatkowe mechanizmy synchronizacji:
- blokady do odczytu/zapisu,
- bariery,
- wirujące blokady;
- możliwość współdzielenia obiektów synchronizujących między wątkami różnych procesów;
- indywidualne ustalanie priorytetów wątku i innych parametrów szeregowania;
- ograniczone czasowo oczekiwanie na zajście niektórych zdarzeń (np. założenie blokady);
- odczyt czasu procesora zużyty przez wątek.
Implementacje biblioteki mogą posiadać swoje niestandardowe rozszerzenia, np. w Linuxie i HP-UX istnieje zestaw funkcji pozwalający określić, na których procesorach w maszynie wieloprocesorowej mogą działać wątki.