2013-03-25 25 views
9

我想圍繞線程的工作方式來圍繞我的頭部,並且我相信我可能會使其過於複雜。試圖圍繞線程包裹我的頭部

獨到的理解:

以前我以爲線程僅限於單一類和它的子類,沒有類可以在線程間共享,和線程間的通信使得它真正的我很難理解。

新認識:

不過,我看到關於它的更多,而不是它看起來像線程只是在相同的代碼的隨機點上運行。您可以將其限制在某些區域,但理論上相同的代碼可以在每個線程中運行多次。

換句話說,如果您將代碼視爲具有轉彎和連接的道路系統,那麼這些是程序可以製作的流程,主線程只是貫穿於此。如果產生了一個新的線程,你只需要說明它應該從哪裏開始,並且代碼從那裏開始,可以使用相同的類和命令,因此如果將代碼構造爲「不良」,則存在兩段代碼「崩潰「,但除此之外,對代碼的閱讀和寫入,其同一程序的所有部分,」道路「上的多個」汽車「沒有限制。

你可以限制一個線程停留在某個區域(循環/有限的部分代碼),並且只在某些地方進行交互,或者你可以忽略它,只是希望避免「崩潰」。


隨着使用線程的「新理解」,它對我來說更容易纏繞我的頭,所以它理解正確嗎?

+7

是的,你以後的理解或多或少是正確的!爲了擴展你的類比,線程同步功能和對象(例如'ManualResetEvent'和'lock')就像紅綠燈一樣可以防止汽車碰撞。 :) – 2013-03-25 09:19:02

+7

有一個很好的免費電子書關於線程在這裏:['Albahari'](http://www.albahari.com/threading/) – 2013-03-25 09:20:09

+0

感謝您的輸入。突然間讓我更加清楚地工作,並圍繞我的腦袋。如此簡單......如果做錯了,那麼危險更大:) – Taoh 2013-03-25 09:25:25

回答

1

你有很大的打擊。一般來說,線程可以做專門的工作,不會相互重疊。如果主線程要產生一個子線程工作,主線程幾乎總是不會這樣做工作

它們重疊的區域需要是「線程安全」的,以免踩到彼此的腳趾;例如多個工作線程爲主線程填充集合。當您在MSDN上查找課程時,您會注意到底部是否有線程安全,或者您需要通過使用.net的鎖定,互斥或信號量來自行完成。

+0

謝謝,以前在錯誤的方式看線程。作爲與計劃其他部分分離的領域,而不是將它們視爲「多個驅動程序」,而避免碰撞的一種方法是將它們分開但不要求。 – Taoh 2013-03-25 13:11:48