是的,C#中的Wait
方法可以与Mutex
一起使用。Mutex
(互斥体)是一种同步原语,用于确保多个线程在访问共享资源时不会发生冲突。Wait
方法用于等待一个条件成立或者等待一段时间。
以下是一个使用Mutex
和Wait
方法的示例:
using System;
using System.Threading;
class Program
{
static Mutex mutex = new Mutex();
static int sharedResource = 0;
static void Main()
{
Thread thread1 = new Thread(Thread1);
Thread thread2 = new Thread(Thread2);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
}
static void Thread1()
{
mutex.WaitOne(); // 等待互斥体被释放
for (int i = 0; i < 100000; i++)
{
sharedResource++;
}
Console.WriteLine("Thread 1 finished.");
mutex.ReleaseMutex(); // 释放互斥体
}
static void Thread2()
{
mutex.WaitOne(); // 等待互斥体被释放
for (int i = 0; i < 100000; i++)
{
sharedResource--;
}
Console.WriteLine("Thread 2 finished.");
mutex.ReleaseMutex(); // 释放互斥体
}
}
在这个示例中,我们创建了两个线程thread1
和thread2
,它们都会访问和修改共享资源sharedResource
。为了避免竞争条件,我们使用Mutex
来确保同一时间只有一个线程可以访问共享资源。mutex.WaitOne()
方法用于等待互斥体被释放,mutex.ReleaseMutex()
方法用于释放互斥体。