到目前爲止,我認爲任何在「共享」對象上完成的操作(對於多線程都是通用的)必須使用「同步」來保護,無論如何。顯然,我錯了 - 在我最近學習的代碼中,有很多類(線程安全的,正如作者聲稱的那樣),並且其中只有一個類使用關鍵部分來處理幾乎所有的方法。德爾福線程 - 代碼的哪些部分需要保護/同步?
如何找到我的代碼的哪些部分/方法需要使用CriticalSection(或任何其他方法)保護,哪些不是?
到目前爲止,我還沒有在任何有趣的解釋/條/博客記迷迷糊糊中,所有的谷歌的結果是:
一)線程和GUI之間的同步的例子。從簡單的進度條到最複雜的過程,但仍然很明顯:每次訪問/修改GUI組件的屬性時,都要在「同步」中執行此操作。但僅此而已。
b)解釋關鍵部分,互斥鎖等的文章。只是一種不同的保護/同步方法。
c)非常非常簡單的線程安全類(線程安全堆棧或列表)的示例 - 它們都執行相同的操作 - 實現進入/離開關鍵部分並返回實際堆棧/列表指針的鎖定/解鎖方法鎖定。
現在我正在尋找解釋哪部分代碼應該受到保護。
可能是代碼形式),但請不要爲我提供一個更「使用同步更新進度」 ...;)
謝謝!
我不想要更具體的答案。事實上,我甚至在尋找更一般的。我需要學習很多關於線程的知識,並且我正在尋找一個很好的「切入點」;)特別是自從我使用Delphi 6以來,從未見過ThreadVar語句... – migajek 2010-10-05 23:39:46
順便說一句,應該不是第三點是「儘量不要使用...」? ;) – migajek 2010-10-05 23:40:20
@ migajek:不,第三點是正確的。 jachguate在說兩個線程可能會做什麼,需要同步。 – 2010-10-05 23:45:00