1
A
回答
3
在System.Threading.Thread
類CurrentThread
靜態屬性是當前CLR System.Threading.Thread
實例。 CLR線程是對底層win32線程的抽象。 System.Diagnostics.ProcessThread
類提供了一個訪問win32線程的權限,主要用於性能跟蹤。
CLR線程的一個關鍵區別是它們不固定到win32線程。
13
當設計.NET 2.0時,它是來自SQL Server項目的宿醉。他們迫切需要CLR團隊真的很難打破.NET Thread類和操作系統線程之間的鏈接。他們當時有理由相信,SQL Server支持以光纖實現的「輕量級」線程。光纖是Windows實現的「協同程序」,這在15年前流行起來。
該項目是一個蕭條,他們不能得到足夠的可靠性。可悲的是,我們堅持使用否將線程映射到ProcessThread的簡單方法。相當的損失。也許有些人有一天會利用解耦,我還沒有看到它完成。
您現在可用的唯一映射現在是線程本身內的P/Invoke GetCurrentThreadId()。這會返回一個您可以匹配到ProcessThread.Id的TID。
相關問題
- 1. InvalidPipeArgument:'[對象對象],[對象對象],[對象對象],[對象對象],[對象對象],[對象對象],
- 2. 對象對象
- 3. 對象的對象
- 4. InvalidCastException對象[*]對象[]
- 5. 對象的對象
- 6. 對象對象jquery
- 7. 對象VS對象
- 8. C#對象/對象
- 9. 對象*或對象*?
- 10. 爲[對象對象]
- 11. 對象與對象
- 12. 「對象」 和 「對象*」
- 13. 對象的對象
- 14. 新{對象} vs {對象} =新{對象}
- 15. 對象對象數組對象
- 16. 獲取[對象XrayWrapper [對象HTMLDivElement]]對象
- 17. getJSON只返回[對象對象],[對象對象]
- 18. 對象 - 對象中的對象 - 這些對象的數組
- 19. 循環輸出[對象,對象,對象對象]
- 20. $ .getJSON返回「未定義」或[對象對象] [對象對象]
- 21. (對象)== 0(對象)0
- 22. HTML對象與jQuery對象
- 23. 轉換對象爲對象
- 24. 對象傳遞對象WEBSERVICES
- 25. Java - 對象內的對象
- 26. .text()返回對象對象
- 27. 帶對象的PHP對象
- 28. 對象內部的對象
- 29. 空==對象VS對象== NULL
- 30. JavaScript [對象] [對象]調試
只需添加更多的輸入,以便CLR線程在Windows線程上創建一個抽象層。這個抽象層產生了一些限制,例如,當它實際上存在於Windows線程中時,無法將空閒和時間關鍵的線程優先級分配給CLR線程。 CLR已經爲它自己運行的某些線程保留了這些線程優先級,例如,垃圾收集器的終結器線程按時間關鍵優先級運行。 – RBT 2016-02-10 23:18:44
我沒有得到最後一點CLR線程不固定到win32線程。你的意思是CLR線程可以指向哪些其他可能的線程類型(除了win32類型的線程),或者你談論的是CLR線程和Windows線程之間的基數關係。 AFAIK在CLR線程和Windows線程之間有一對一映射。無論何時在C#中新建線程類時,在幕後它最終只會創建一個Windows線程。兩個CLR線程永遠不能指向相同的win32線程。 – RBT 2016-02-10 23:20:57