回答
你應該在MSDN開始。
- System.Threading.Mutex:同步原語,也可用於進程間同步。
- System.Threading.Semaphore:限制可以同時訪問資源或資源池的線程數。
通常你只能在進程間使用Mutex,例如,如果您擁有多個應用程序必須共享的資源,或者您想構建單實例應用程序(即只允許一次運行一個副本)。
信號量允許您限制對特定數量的併發線程的訪問,例如,一次最多可以有兩個線程執行特定的代碼路徑。
+1爲MSDN。它是Windows API空間中所有內容的RTFM轉換。 – 2009-10-12 07:14:30
信號燈也可用於跨進程同步「命名系統信號量是整個操作系統中可見,且可用於進程的活動同步」:https://msdn.microsoft.com/en-us/library/ system.threading.semaphore(v = vs.110).aspx – 2017-11-14 21:00:54
你可能想看看lock語句。它可以通過調用Monitor.Enter和Monitor.Exit處理絕大多數的線程控制同步任務,在C#
class Test {
private static object Lock = new object();
public function Synchronized()
{
lock(Lock)
{
// Only one thread at a time is able to enter this section
}
}
}
lock語句來實現。它相當於下面的代碼:
Monitor.Enter(Lock);
try
{
// Only one thread at a time is able to enter this section
}
finally
{
Monitor.Exit(Lock);
}
我通過閱讀這篇開始:http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials ,然後用bobbymcr發佈的MSDN環節加強它。
好文章... – Ricibob 2013-03-01 16:28:28
- 1. 爲什麼我們需要互斥信號和信號量?
- 2. 信號量和互斥量在實現中有什麼區別?
- 3. JAVA中的互斥量和信號量?
- 4. 信號量與互斥量
- 5. 互斥體和信號量實際上做了什麼?
- 6. 互斥量和信號量之差= 1?
- 7. erlang信號量(互斥)
- 8. 使用互斥量和信號量實現屏障
- 9. 相互排斥和信號量
- 10. 信號量和互斥鎖定概念
- 11. BoundedSemaphore信號量vs標準互斥量
- 12. 使用互斥量作爲信號量?
- 13. pthread_once_t變量是否需要互斥鎖?
- 14. 在磁盤或內存中提高互斥量和信號量?
- 15. 爲什麼信號量的條件/互斥體實現在其「wait()」函數中需要「while」循環?
- 16. 爲什麼在ndb中需要和默認是互斥的?
- 17. 線程和進程同步的信號量和互斥量
- 18. 在C++中使用互斥信號和條件變量實現監視器
- 19. 什麼是消息隊列更好?互斥體和cond或互斥體和信號量?
- 20. LINUX系統中互斥和信號量是否「忙等待」?
- 21. 帶互斥量和信號量的volatile關鍵字
- 22. 爲什麼我們需要DTD和其他地方的「實體」
- 23. 什麼是默認互斥量屬性?
- 24. 我需要一個指針向量上的互斥量嗎?
- 25. C++/Linux中的系統範圍全局變量/信號量/互斥量?
- 26. 爲什麼互斥體不需要互斥體(並且該互斥體需要互斥體...)
- 27. 信號量和互斥量,哪一個更快?
- 28. 如何在win32 API中刪除互斥鎖和信號量?
- 29. 爲什麼需要一個空互斥量?
- 30. 什麼是在Go中實現信號量的最佳方式
這是太大了一個話題回答IMHO..do你有什麼具體問題? – Naveen 2009-10-12 06:32:24
納溫請建議我一些分解的問題,以便我可以挖掘它.. – 2009-10-14 04:35:22