AutoResetEvent
是一种同步基元,用于在多线程环境中控制线程的执行顺序。它允许一个或多个线程等待某个事件的发生,当事件被设置(signaled)时,等待的线程将被释放并继续执行。
AutoResetEvent
提供了一种简单的方式来同步线程的执行。AutoResetEvent
会自动重置为未设置状态,只允许一个线程继续执行。AutoResetEvent
有两种状态:
原因:
WaitOne
方法。解决方法:
Set
方法设置事件。WaitOne
方法。using System;
using System.Threading;
class Program
{
static AutoResetEvent eventObj = new AutoResetEvent(false);
static void Main()
{
Thread t1 = new Thread(new ThreadStart(Waiter));
Thread t2 = new Thread(new ThreadStart(Setter));
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
static void Waiter()
{
Console.WriteLine("线程等待事件被设置...");
eventObj.WaitOne();
Console.WriteLine("事件被设置,线程继续执行...");
}
static void Setter()
{
Thread.Sleep(2000);
Console.WriteLine("设置事件...");
eventObj.Set();
}
}
AutoResetEvent 类 (System.Threading)
通过上述示例代码,可以看到如何使用 AutoResetEvent
来同步两个线程的执行。Waiter
方法等待事件被设置,而 Setter
方法在延迟后设置事件,从而释放等待的线程。
领取专属 10元无门槛券
手把手带您无忧上云