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