Kiedy śpisz na wątku, co się właściwie dzieje?
Widzę, że uśpienie wątku „wstrzymuje bieżący wątek na określony czas” . Ale jak to działa?
Zgodnie z tym, jak Thread.sleep () działa wewnętrznie i jak naprawdę działa Thread.sleep? :
- czas trwania snu będzie podlegał pewnej szczegółowości specyficznej dla systemu
- sen blokuje
- wątek opuszcza procesor i zatrzymuje jego wykonywanie
- wątek nie zużywa czasu procesora podczas snu
Po prostu nie do końca rozumiem wewnętrzną i podstawową mechanikę tego, co to wszystko znaczy.
Rozumiem, że istnieje coś o nazwie harmonogram, który jest odpowiedzialny za przełączanie między wątkami.
Źródła wydają się wskazywać, że różni się to w zależności od systemu operacyjnego (lub sprzętu?), A większość wątków ma około 1–60 ms na wykonanie pewnych działań, zanim procesor przełączy się na inny wątek.
Ale kiedy wątek śpi (na przykład wiele sekund), jak go wznawia? Zgaduję, że w jakiś sposób zaangażowany jest zegar, czy to zegar płyty głównej? Czy ma to związek z częstotliwością taktowania procesora?
A nawet jeśli zaangażowany jest licznik czasu, skąd procesor wie, kiedy nadszedł czas, aby ponownie zwrócić uwagę na wątek? Czy nie musiałby stale sprawdzać wątku, aby sprawdzić, czy jest gotowy? Czy to nie jest efektywne odpytywanie i dlatego zajmuje trochę czasu procesora?
Czy uśpienie wątku jest specyficzne dla języka, czy system operacyjny jest za to odpowiedzialny, czy jest to coś specyficznego dla procesora?
Czy ktoś mógłby mi to wyjaśnić za pomocą podstawowych wyjaśnień na temat harmonogramu i tego, co robi procesor przez cały czas?