我一直在測試一些在C#中使用ThreadPool
的代碼,我發現發生了很多不必要的上下文切換。當一個線程正在執行常規語句時,它將獲得上下文切換。他們似乎每一行都來回走動。我想知道這背後的邏輯是什麼。爲什麼一個線程會被切換到正常執行狀態?C#ThreadPool上下文切換邏輯
4
A
回答
4
線程應該同時執行,同時運行兩個線程。實際上,每個線程(在單個處理器計算機上)都會獲得有限的時間量(稱爲量子),這是在上下文切換之前執行的。這當然是一種過分簡化,但基本上這就是發生了什麼。
當你在調試器中運行兩個線程並逐步完成(這是我猜測你正在做的事情),逐句執行每個語句的行爲會導致它超出線程執行的時間,一個上下文切換回另一個線程。
2
在調試時逐句通過代碼時,每行都比正常執行時的WAY長。這就是爲什麼有這麼多的上下文切換。通常情況下,它們每秒發生多次。
相關問題
- 1. 線程和上下文切換C++
- 2. 線程上下文切換vs進程上下文切換
- 3. Bootstrap手風琴切換邏輯
- 4. Php切換窗體:邏輯錯誤?
- 5. Magento移動版商店切換邏輯
- 6. lpc 1769上下文切換
- 7. Python:GIL上下文切換
- 8. 切換畫布上下文
- 9. 上下文切換太貴
- 10. PHP上下文切換
- 11. 邏輯:結合下拉框切換可見性
- 12. C切換邏輯功能不按預期方式工作
- 13. 切換OpenGL上下文或切換上下文渲染目標,而最好?
- 14. 從進程上下文切換切換線程上下文有多好?
- 15. 邏輯&&在C
- 16. 以下c邏輯有什麼問題?
- 17. 上下文切換意味着模式切換
- 18. 轉換邏輯串
- 19. 將上下文切換與Xenomai
- 20. 在ReverseProxy上下文中切換SSLVerifyClient
- 21. 忙等待和上下文切換
- 22. FreeRTOS的上下文切換 - xQueueSend
- 23. 多線程:上下文切換
- 24. 上下文切換多線程
- 25. BlockingQueue中的上下文切換開銷
- 26. 計算有多少上下文切換
- 27. 什麼是上下文切換?
- 28. FreeRTOS初始上下文切換
- 29. 監視pthread上下文切換
- 30. 使用SIGALRM切換線程上下文
你是怎麼注意到的? – 2011-02-24 11:25:38
在visual studio上調試? – Aks 2011-02-24 11:26:21
請不要生氣,但你很有趣。看到我的回答 – 2011-02-24 11:27:34