![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Multithreaded_process.svg/langpl-640px-Multithreaded_process.svg.png&w=640&q=50)
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. |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Multithreaded_process.svg/320px-Multithreaded_process.svg.png)
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.