C#中的互斥锁

互斥锁是一种常用的线程同步机制,用于保证在任意时刻只有一个线程在访问共享资源。在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类可以大大提高数据的正确性和代码的健壮性,但是过多的互斥锁使用也会影响程序的性能。需要根据实际情况对互斥锁的使用进行优化。

猜你喜欢

转载自blog.csdn.net/w909252427/article/details/129713431
今日推荐