Khi bạn ngủ một chủ đề, những gì đang thực sự xảy ra?
Tôi thấy rằng ngủ một chủ đề "tạm dừng chủ đề hiện tại trong một khoảng thời gian nhất định" . Nhưng nó hoạt động như thế nào?
Theo cách thức Thread.s ngủ () hoạt động nội bộ và Thread.s ngủ thực sự hoạt động như thế nào? :
- thời gian ngủ sẽ phải chịu một số chi tiết cụ thể của hệ thống
- giấc ngủ bị chặn
- luồng ra khỏi CPU và dừng thực thi
- luồng không tiêu tốn thời gian CPU trong khi ngủ
Tôi hoàn toàn không thể hiểu được các cơ chế bên trong và cơ bản của tất cả những điều này có nghĩa là gì.
Tôi hiểu rằng có một cái gì đó được gọi là bộ lập lịch chịu trách nhiệm chuyển đổi giữa các luồng.
Các nguồn dường như chỉ ra rằng điều này thay đổi tùy theo HĐH (hoặc phần cứng?) Và hầu hết các luồng được đưa ra 1ms - 60ms hoặc lâu hơn để thực hiện một số hành động trước khi CPU chuyển sang luồng khác.
Nhưng khi một luồng ngủ (ví dụ, nhiều giây), làm thế nào để nó tiếp tục? Tôi đoán một bộ đếm thời gian có liên quan bằng cách nào đó, nó có phải là đồng hồ của bo mạch chủ? Có liên quan đến tốc độ xung nhịp CPU?
Và ngay cả khi có liên quan đến bộ đếm thời gian, làm thế nào CPU biết khi nào cần chú ý đến luồng một lần nữa? Nó sẽ không phải liên tục kiểm tra chủ đề để xem nó đã sẵn sàng chưa? Đó không phải là bỏ phiếu hiệu quả và do đó loại đang tiêu tốn thời gian của CPU?
Là ngủ một ngôn ngữ cụ thể theo chủ đề hay HĐH chịu trách nhiệm cho nó hay nó là một thứ dành riêng cho CPU?
Ai đó vui lòng giải thích điều này cho tôi với những giải thích cơ bản về những thứ như bộ lập lịch và CPU đang làm gì trong tất cả những điều này?