Rozumiem, że proces to jednostka własności zasobów i instrukcje wykonywalne. Wątki pozwalają procesowi współużytkować zasoby z wieloma wykonaniami, a systemowi operacyjnemu łatwiej jest zaplanować wątki z powodu całego obciążenia związanego z całymi procesami.
Ale dlaczego nazwa wątku ? Czy ma jakieś odniesienie do łańcucha lub przeplatania wykonania? Mimo to moim zdaniem nie jest to termin intuicyjny.
Widziałeś kiedyś, jak wiele nici, skręconych, tworzy grubszy, mocniejszy sznur?
To jest metafora, każdy wątek jest niezależny, ale wszystkie wątki razem współpracują w celu uzyskania ostatecznego wyniku obliczeniowego. Poza tym, podobnie jak w przypadku nici tekstylnej, nić może pęknąć bez naruszenia struktury całego kordu.
źródło
tl; dr: Nazywa się je wątkami, ponieważ „wątek” jest trafną metaforą.
Kiedy uruchamiasz wątek, polegasz na systemie operacyjnym, aby przydzielić czas przetwarzania, aby twój wątek mógł wykonać. Podczas wykonywania wątku procesor (lub rdzeń) kładzie całą uwagę na wątek. Gdy system operacyjny przełącza rdzeń na inny wątek, wątek przestaje działać, gdy drugi wątek jest obsługiwany.
A więc egzekucja przeskakuje wszędzie. Ale pomimo tych skoków integralność zestawu instrukcji maszynowych pozostaje nienaruszona, ponieważ budujemy ogrodzenia i mechanizmy współbieżności, aby chronić jego stan oraz stan obiektów, z którymi wchodzi on w interakcje.
Tak więc wątek odnosi się nie do wykonywania instrukcji w danym wątku, ale do instrukcji, które ostatecznie zostaną wykonane w wątku, który utworzyliśmy. Innymi słowy, każdy wątek można traktować jako pojedynczą maszynę lub agenta (nazywamy je lekkimi procesami), bez konieczności myślenia o wszystkich przełącznikach kontekstu, które wykonuje system operacyjny, aby wyglądać, jakby wszystkie były wykonywanie jednocześnie.
Innymi słowy, pomimo całego przeskakiwania, które system operacyjny wykonuje za kulisami, to, co nazywamy wątkiem (sekwencja operacji, które wykonujemy w lekkim procesie), nadal można uznać za tę samą sekwencję operacji, gdybyśmy nie spawnowali wątku, zakładając, że podjęliśmy niezbędną ochronę przed współbieżnością.
Jeśli ten opis wydaje się zbyt ciężki i abstrakcyjny, pomyśl o wątku na forum, takim jak Reddit. Możesz rozgałęziać nowe dyskusje; każda dyskusja ma swój własny wątek. Możesz przeskakiwać między wątkami. Ale każdy wątek nadal zachowuje integralność strukturalną jako indywidualna rozmowa.
źródło
Trudno jest rozplątać (w pełni zamierzony kalambur) źródło terminu „Wątek”, ponieważ różne rzeczy mętnieją w wodzie.
Użycie wątku na forum lub w poczcie e-mailowej prawie na pewno wynika z wyrażenia „wątek rozmowy”, które zgodnie z tym datuje się na 1593 rok.
Wydaje się, że znaczenie wątku, o który pytasz, jest mniej jasne, ponieważ zgodnie z tym linkiem wątki, które znamy, nie były tak naprawdę nazywane „wątkami” aż do lat 70. lub prawdopodobnie wczesnych lat 80., pomimo wdrożenia procesu pamięci dzielonej faktycznie wyprzedzając to, co dziś nazywamy procesami wagi ciężkiej. Biorąc pod uwagę, że pokrewna forma wieloprocesowego przetwarzania pamięci wspólnej nazywana jest „włóknem”, podejrzewam, że słowo „nić” powinno przypominać tkaninę tkacką lub inną analogię związaną z tkaniną.
źródło
Myślę, że ma to związek z „wątkiem rozumowania” lub „wątkiem myśli”.
W przeciwieństwie do procesu wątki współużytkują pamięć. Więc jeśli proces jest porównywany do osoby z własnym umysłem (pamięcią), nitkę można porównać do jednej linii myśli w tym umyśle.
źródło
Czytałem gdzieś analogię wątków w programowaniu: myślę, że procesor to igła do szycia, a nić jako faktyczny ciąg. Teraz, jeśli masz wiele igieł do szycia, ale tylko jedną nić. Nie sądzisz, że będzie to dość nieefektywne. Druga procesor / igła do szycia będzie czekać na dostępność nici. Jeśli jednak mamy wiele wątków, zadanie można wykonać w krótkim czasie.
źródło