using System;
using System.Threading;
class Program
{
static ManualResetEvent mre = new ManualResetEvent(false);
static void Main()
{
// 启动一个线程
Thread thread = new Thread(DoWork);
thread.Start();
Console.WriteLine("Press 'Enter' to signal the ManualResetEvent...");
Console.ReadLine();
// 信号通知ManualResetEvent,使等待的线程继续执行
mre.Set();
thread.Join();
Console.WriteLine("Thread has finished execution.");
}
static void DoWork()
{
Console.WriteLine("Thread is waiting for the ManualResetEvent signal...");
// 等待ManualResetEvent信号
mre.WaitOne();
Console.WriteLine("ManualResetEvent signaled. Thread can proceed.");
}
}
ManualResetEvent 是一个同步基元,用于在线程之间进行通信。它有两种状态:已设置(signaled)和未设置(nonsignaled)。DoWork,该线程会调用 mre.WaitOne() 进入等待状态,直到 mre.Set() 被调用。mre.Set() 发出信号,通知所有等待的线程继续执行。ManualResetEvent 的构造函数参数 false 表示初始状态为未设置,即线程会阻塞在 WaitOne() 处,直到 Set() 被调用。下一篇:c# orderby
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站