互斥锁是一种常用的线程同步机制,用于保证在任意时刻只有一个线程在访问共享资源。在C#中,可以使用Mutex类来实现互斥锁。Mutex类提供的WaitOne和ReleaseMutex方法可分别用于等待互斥锁的释放和释放持有的互斥锁。
下面是一个使用Mutex类实现互斥锁的示例代码:
using System; using System.Threading; class Program { static Mutex mutex = new Mutex(); static void Main() { Thread thread1 = new Thread(DoWork); Thread thread2 = new Thread(DoWork); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); } static void DoWork() { mutex.WaitOne(); Console.WriteLine("线程{0}正在执行任务...", Thread.CurrentThread.ManagedThreadId); Thread.Sleep(1000); Console.WriteLine("线程{0}任务执行完毕!", Thread.CurrentThread.ManagedThreadId); mutex.ReleaseMutex(); } }
在这个示例代码中,DoWork方法是一个需要互斥锁保护的任务,在进入这个方法之前,线程需要调用mutex.WaitOne方法等待互斥锁的释放,当任务完成后,需要调用mutex.ReleaseMutex方法释放持有的互斥锁。使用Mutex类可以大大提高数据的正确性和代码的健壮性,但是过多的互斥锁使用也会影响程序的性能。需要根据实际情况对互斥锁的使用进行优化。