Bir iplik uyuduğunuzda , aslında neler oluyor?
Bir iş parçacığının uyutulmasının "geçerli iş parçacığını belirli bir süre duraklatır" olduğunu görüyorum . Ama nasıl çalışır?
Göre içten) (Nasıl Thread.sleep işleri ve Thread.sleep gerçekten nasıl çalışır? :
- uyku süresi sisteme özgü bir ayrıntı düzeyine tabi olacaktır
- uyku engelliyor
- iş parçacığı CPU'dan ayrılır ve yürütülmesini durdurur
- iplik uyku sırasında CPU zamanını tüketmiyor
Tüm bunların ne anlama geldiğinin iç ve temel mekaniğini tam olarak anlayamıyorum.
İş parçacıkları arasında geçiş yapmaktan sorumlu zamanlayıcı adı verilen bir şey olduğunu anlıyorum .
Kaynaklar, bunun işletim sistemine (veya donanıma?) Göre değiştiğini ve CPU'ya başka bir iş parçacığına geçmeden önce bazı eylemleri gerçekleştirmek için çoğu iş parçacığına 1ms - 60ms kadar verildiğini gösteriyor.
Ancak bir iş parçacığı uyuduğunda (örneğin, birkaç saniye), nasıl devam eder? Sanırım bir zamanlayıcı bir şekilde dahil, anakartın saati mi? İşlemci saat hızı ile mi ilgili?
Ve bir zamanlayıcı dahil olsa bile, CPU iş parçacığına tekrar dikkat etmenin zamanı geldiğini nasıl bilebilir? Hazır olup olmadığını görmek için iş parçacığını sürekli kontrol etmesi gerekmez mi? Etkin bir şekilde değil mi yoklama ve dolayısıyla tür bir CPU zaman alıcı?
Uyumak bir iş parçacığı diline özgü mü yoksa işletim sisteminden sorumlu mu yoksa CPU'ya özgü bir şey mi?
Birisi bunu bana zamanlayıcı gibi şeylerin temel açıklamaları ve tüm bunlar sırasında CPU'nun ne yaptığını açıklar mı?