91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C#中的ManualResetEvent類如何使用

小億
88
2023-08-03 14:14:51
欄目: 編程語言

在C#中,ManualResetEvent類用于實現線程的同步和協調。下面是使用ManualResetEvent類的基本方法:

  1. 創建一個ManualResetEvent對象:
ManualResetEvent mre = new ManualResetEvent(false); // 初始狀態為未發信號
  1. 等待信號:
mre.WaitOne(); // 阻塞當前線程,直到收到信號
  1. 發送信號:
mre.Set(); // 發送信號,喚醒等待中的線程
  1. 重置信號:
mre.Reset(); // 重置信號,設置為未發信號狀態

完整示例:

using System;
using System.Threading;
class Program
{
static ManualResetEvent mre = new ManualResetEvent(false);
static void Main()
{
Thread t1 = new Thread(DoWork);
Thread t2 = new Thread(DoWork);
t1.Start();
t2.Start();
Thread.Sleep(2000); // 等待線程啟動
mre.Set(); // 發送信號
Thread.Sleep(2000); // 等待線程結束
mre.Reset(); // 重置信號
mre.Set(); // 發送信號
Console.ReadLine();
}
static void DoWork()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + " Waiting...");
mre.WaitOne(); // 等待信號
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + " Resumed...");
}
}

在上述示例中,兩個線程t1和t2都會等待收到信號后才會繼續執行。調用mre.Set()方法會發送信號,喚醒等待中的線程。調用mre.Reset()方法會重置信號,設置為未發信號狀態。

0
日土县| 六盘水市| 汝南县| 龙泉市| 镇赉县| 庐江县| 甘德县| 南康市| 水富县| 长治市| 禄劝| 牙克石市| 新乡市| 远安县| 冷水江市| 壤塘县| 合江县| 大足县| 宣恩县| 资兴市| 廉江市| 公主岭市| 阿尔山市| 大名县| 潮安县| 南平市| 灵台县| 平阴县| 肃北| 通山县| 兰溪市| 汉沽区| 罗田县| 和平区| 永安市| 德令哈市| 甘南县| 崇义县| 宜君县| 西盟| 宁晋县|