C# Mutex 进程同步

参考MSDN官方:

Mutex 构造函数

贴入官方代码:

 1 // This example shows how a Mutex is used to synchronize access
 2 // to a protected resource. Unlike Monitor, Mutex can be used with
 3 // WaitHandle.WaitAll and WaitAny, and can be passed across
 4 // AppDomain boundaries.
 5  
 6 using System;
 7 using System.Threading;
 8 
 9 class Test
10 {
11     // Create a new Mutex. The creating thread does not own the
12     // Mutex.
13     private static Mutex mut = new Mutex();
14     private const int numIterations = 1;
15     private const int numThreads = 3;
16 
17     static void Main()
18     {
19         // Create the threads that will use the protected resource.
20         for(int i = 0; i < numThreads; i++)
21         {
22             Thread myThread = new Thread(new ThreadStart(MyThreadProc));
23             myThread.Name = String.Format("Thread{0}", i + 1);
24             myThread.Start();
25         }
26 
27         // The main thread exits, but the application continues to
28         // run until all foreground threads have exited.
29     }
30 
31     private static void MyThreadProc()
32     {
33         for(int i = 0; i < numIterations; i++)
34         {
35             UseResource();
36         }
37     }
38 
39     // This method represents a resource that must be synchronized
40     // so that only one thread at a time can enter.
41     private static void UseResource()
42     {
43         // Wait until it is safe to enter.
44         mut.WaitOne();
45 
46         Console.WriteLine("{0} has entered the protected area", 
47             Thread.CurrentThread.Name);
48 
49         // Place code to access non-reentrant resources here.
50 
51         // Simulate some work.
52         Thread.Sleep(500);
53 
54         Console.WriteLine("{0} is leaving the protected area\r\n", 
55             Thread.CurrentThread.Name);
56          
57         // Release the Mutex.
58         mut.ReleaseMutex();
59     }
60 }

 

上一篇:c#访问修饰符


下一篇:第24题:一马当先