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