2012-07-17 65 views
9

所以我正在讀「通過C#CLR」,發現這一行「線程是一個Windows的概念,其任務是虛擬化CPU」。真?來自Windows的單個\多線程?

谷歌搜索的理由沒有幫助,因此尋求社區的幫助。線程是一個Windows概念嗎?

+1

我認爲本書意味着線程由Windows內核管理,而不是.NET運行時管理。 – MattDavey 2012-07-17 18:06:27

+2

我認爲這個問題屬於程序員,但後來,我是誰。你甚至不能投票移交給程序員。 – 2012-07-17 18:06:57

+1

這是一個容易理解的錯誤。從技術上講,線程是操作系統級的概念。 O/S管理線程。在C#的情況下,在大多數情況下(單聲道不能承受),O/S將是Windows,所以在這種情況下,通常它是Windows級別的概念。作爲一個普通的,非技術性的解釋什麼是線程,它是有道理的。這在技術上並不準確,但你的平均新手不會知道或關心這個區別。 – David 2012-07-17 18:11:58

回答

6

簡短回答:不,這不僅僅是Windows的概念,而且這個概念已經存在很長時間了。

10

我想是作者真正的意思是線程的機制是什麼,是由Windows和.NET不框架進行管理。

+0

這是明顯錯誤的方式,.NET線程不映射到操作系統線程,他們可以共享一個線程,甚至切換到幕後更輕的光纖。他們真的是一個.NET的東西。 – Blindy 2012-07-17 19:17:36

+2

C#文檔中沒有任何內容說我無法在任何時候進行阻止調用。他們看起來和行爲非常像操作系統線程給我。任務管理器似乎也這麼想:如果我用C#製作2000個線程,TM將顯示我的進程擁有2001個線程。對於.NET(或任何其他框架或環境)來說,試圖對我的代碼進行光纖/綠色化將是非常不友好的。我看不出它是如何做到的,TBH。 – 2012-07-17 21:32:09

+0

我現在同意CLR線程映射到操作系統線程,但葡萄樹告訴這可能會在將來改變(或可能已經在4.5或5.0)。 – 2012-07-18 15:36:40

1

我相信Amiga已經有了多線程。難道說文本是指多線程(也)是Windows的概念,但並不是(最初)是Windows發明?

2

我會說,當我們談論Windows上的「線程化」時,對共享內存和實現有一定的假設。直到我轉到Windows編程(而不是嵌入式編程)之前,我從未聽過「線程」這個術語。我更熟悉多處理和多任務處理。所以這個概念並不是獨一無二的,但是終結論可能已經改變了。我會在Windows之前的經驗中指出,多個進程不共享內存,除非它是全局的。