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

溫馨提示×

c#中manualresetevent怎么使用

小億
112
2023-07-08 18:54:44
欄目: 編程語言

在C#中,ManualResetEvent是一種同步原語,用于控制多個線程之間的同步。

使用ManualResetEvent的基本步驟如下:

  1. 創建一個ManualResetEvent對象:
ManualResetEvent manualResetEvent = new ManualResetEvent(false); // 初始狀態為非終止狀態
  1. 在需要等待的線程中調用WaitOne方法等待信號:
manualResetEvent.WaitOne(); // 線程將在這里等待,直到接收到信號
  1. 在發送信號的線程中調用Set方法發送信號:
manualResetEvent.Set(); // 發送信號,喚醒等待的線程
  1. 在需要重置信號的時候,可以調用Reset方法將ManualResetEvent重置為非終止狀態:
manualResetEvent.Reset(); // 重置為非終止狀態

完整示例代碼如下:

using System;
using System.Threading;
class Program
{
static ManualResetEvent manualResetEvent = new ManualResetEvent(false);
static void Main(string[] args)
{
// 創建線程并啟動
Thread t1 = new Thread(DoWork);
Thread t2 = new Thread(DoWork);
t1.Start();
t2.Start();
// 等待一段時間后發送信號
Thread.Sleep(2000);
Console.WriteLine("Sending signal...");
manualResetEvent.Set();
// 等待線程完成
t1.Join();
t2.Join();
Console.WriteLine("Done");
Console.ReadLine();
}
static void DoWork()
{
Console.WriteLine("Thread {0} waiting...", Thread.CurrentThread.ManagedThreadId);
manualResetEvent.WaitOne(); // 線程將在這里等待,直到接收到信號
Console.WriteLine("Thread {0} resumed", Thread.CurrentThread.ManagedThreadId);
}
}

這個示例中,創建了兩個線程t1和t2,并且啟動它們。然后,主線程等待2秒后發送信號給ManualResetEvent,兩個子線程在調用WaitOne方法時都會被阻塞,直到接收到信號后才會繼續執行。最后,主線程等待兩個子線程完成后輸出"Done"。

0
灵山县| 济南市| 金溪县| 安龙县| 铅山县| 朝阳区| 来凤县| 夏河县| 徐州市| 安溪县| 得荣县| 沙雅县| 交城县| 鹿泉市| 闸北区| 宁安市| 扬州市| 镶黄旗| 东台市| 东乌珠穆沁旗| 漳浦县| 莲花县| 聊城市| 松滋市| 五河县| 香港| 桦甸市| 基隆市| 桐柏县| 肇东市| 文昌市| 凉城县| 文山县| 五原县| 遂川县| 肃北| 佛山市| 中卫市| 大丰市| 长葛市| 仁怀市|