Wątek (informatyka)
Z Wikipedii, wolnej encyclopedia
Wątek (ang. thread) – część programu wykonywana współbieżnie w obrębie jednego procesu; w jednym procesie może istnieć wiele wątków.
Ten artykuł dotyczy pojęcia wątków w programowaniu. Zobacz też: inne znaczenia tego słowa. |
Ten artykuł od 2021-04 wymaga zweryfikowania podanych informacji. |
Różnica między zwykłym procesem a wątkiem polega na współdzieleniu przez wszystkie wątki działające w danym procesie przestrzeni adresowej oraz wszystkich innych struktur systemowych (np. listy otwartych plików, gniazd itp.) – z kolei procesy posiadają niezależne zasoby.
Ta cecha ma dwie ważne konsekwencje:
- Wątki wymagają mniej zasobów do działania i też mniejszy jest czas ich tworzenia.
- Dzięki współdzieleniu przestrzeni adresowej (pamięci) wątki jednego zadania mogą się między sobą komunikować w bardzo łatwy sposób, niewymagający pomocy ze strony systemu operacyjnego. Przekazanie dowolnie dużej ilości danych wymaga przesłania jedynie wskaźnika, zaś odczyt (a niekiedy zapis) danych o rozmiarze nie większym od słowa maszynowego nie wymaga synchronizacji (procesor gwarantuje atomowość takiej operacji).
Wątki są udostępniane wprost przez system operacyjny MS Windows, w systemach Linux, BSD i innych dostępna jest biblioteka pthread, dająca jednolity interfejs, ukrywający szczegóły implementacji. W językach programowania używających maszyn wirtualnych (Python, Java itp.) są dostępne również tzw. zielone wątki, które nie są obsługiwane przez system operacyjny, ale samą maszynę wirtualną – to pozwala m.in. na realizację współbieżności nawet wtedy, gdy docelowy system operacyjny nie udostępnia wątków.