2012-07-09 39 views

回答

0

當某個任務完成後您想要開始/繼續處理時使用事件,即您希望等到該事件發生。其他線程可以使用SetEvent通知等待線程完成此任務。

在另一方面,當你想只有一個線程在一個時間即要的一組指令由一個線程沒有任何其他線程改變在該狀態下執行來執行的代碼塊臨界部分用於時間。例如,您將一個項目插入鏈接列表中,該鏈接涉及多個步驟,當時您不希望另一個線程到來並嘗試將另一個對象插入到列表中。所以你阻止其他線程,直到第一個完成使用關鍵部分。

0

事件可以用於進程間通信,即不同進程之間的同步活動。它們通常用於「發信號」活動的發生(例如,文件寫入已完成)。有關事件的更多信息: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686915%28v=vs.85%29.aspx

關鍵部分只能在同步線程的過程中使用,並使用基本的鎖定/解鎖概念。它們通常用於保護資源免受多線程訪問(例如變量)的影響。他們使用非常便宜(以CPU方式)。該進程間變體在Windows中稱爲Mutex。更多信息: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682530%28v=vs.85%29.aspx