温馨提示×

c# wait 能与Mutex一起用吗

c#
小樊
81
2024-11-26 10:24:18
栏目: 编程语言

是的,C#中的Wait方法可以与Mutex一起使用。Mutex(互斥体)是一种同步原语,用于确保多个线程在访问共享资源时不会发生冲突。Wait方法用于等待一个条件成立或者等待一段时间。

以下是一个使用MutexWait方法的示例:

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(); // 释放互斥体
    }
}

在这个示例中,我们创建了两个线程thread1thread2,它们都会访问和修改共享资源sharedResource。为了避免竞争条件,我们使用Mutex来确保同一时间只有一个线程可以访问共享资源。mutex.WaitOne()方法用于等待互斥体被释放,mutex.ReleaseMutex()方法用于释放互斥体。

0