2009-10-12 67 views

回答

27

你應該在MSDN開始。

通常你只能在進程間使用Mutex,例如,如果您擁有多個應用程序必須共享的資源,或者您想構建單實例應用程序(即只允許一次運行一個副本)。

信號量允許您限制對特定數量的併發線程的訪問,例如,一次最多可以有兩個線程執行特定的代碼路徑。

+5

+1爲MSDN。它是Windows API空間中所有內容的RTFM轉換。 – 2009-10-12 07:14:30

+0

信號燈也可用於跨進程同步「命名系統信號量是整個操作系統中可見,且可用於進程的活動同步」:https://msdn.microsoft.com/en-us/library/ system.threading.semaphore(v = vs.110).aspx – 2017-11-14 21:00:54

5

你可能想看看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); 
} 
+2

很好的答案,並且可能有用,但並不真正回答提出的問題。想到-1,但留在這個評論。 ;-) – peSHIr 2009-10-12 07:18:25

+0

那麼在C#5.0中改變實現:) – KadekM 2014-01-13 12:23:33

相關問題