簡體   English   中英

試圖繞過線程

[英]Trying to wrap my head around threads

我試圖圍繞線程如何工作,我相信我可能會過於復雜。

原始理解:

以前我認為線程僅限於單個類及其子類,沒有類可以跨線程共享,線程之間的通信使我很難理解。

新理解:

但是我讀的越多,它就好像線程只是在同一個代碼中的隨機點運行。 您可以將其限制在某些區域,但理論上相同的代碼可以在每個線程中運行多次。

換句話說,如果您將代碼看作是具有轉彎和連接的道路系統,那么這些是程序可以進行的流程,主線程就是通過它來運行的。 如果產生了一個新線程,你所做的就是說它應該從哪里開始,代碼從那里開始,可以使用相同的類和命令,所以如果你構造代碼“壞”,則存在兩段代碼的風險“崩潰“,但旁邊沒有限制閱讀和寫入代碼,它是同一個程序的所有部分,只是”道路“上的多個”汽車“。

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


隨着“新理解”與線程一起工作對我來說更容易包裹我的頭腦,所以它是否被理解為正確?

你幾乎打了它。 通常,線程是專門的工作,不會相互重疊。 如果主線程必須產生一個子線程才能工作 ,那么主線程幾乎總是不會做這項工作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM