是的,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()方法用于釋放互斥體。