亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C# ManualResetEvent怎樣實現線程同步

c#
小樊
82
2024-10-12 07:34:57
欄目: 編程語言

ManualResetEvent 是 C# 中用于線程同步的一個類。它允許一個或多個線程等待,直到另一個線程設置事件。ManualResetEvent 有兩種狀態:SetReset。當事件處于 Set 狀態時,等待的線程會被釋放;當事件處于 Reset 狀態時,線程需要繼續等待。

下面是一個使用 ManualResetEvent 實現線程同步的示例:

using System;
using System.Threading;

class Program
{
    static ManualResetEvent _event = new ManualResetEvent(false); // 創建一個初始值為 false 的 ManualResetEvent

    static void Main(string[] args)
    {
        Thread thread1 = new Thread(DoWork);
        Thread thread2 = new Thread(DoWork);

        thread1.Start();
        thread2.Start();

        // 讓線程1完成工作后設置事件
        _event.Set();

        thread1.Join();
        thread2.Join();
    }

    static void DoWork()
    {
        Console.WriteLine("線程1開始工作...");

        // 等待事件被設置
        _event.WaitOne();

        Console.WriteLine("線程1繼續工作...");
        Console.WriteLine("線程1完成工作...");
    }
}

在這個示例中,我們創建了兩個線程 thread1thread2,它們都執行 DoWork 方法。在 DoWork 方法中,我們使用 _event.WaitOne() 讓線程等待事件被設置。在 Main 方法中,我們首先啟動兩個線程,然后在適當的時候調用 _event.Set() 設置事件,以便線程可以繼續執行。

需要注意的是,ManualResetEvent 在使用完后應該被釋放。你可以在程序結束時調用 _event.Dispose() 方法來釋放事件。在上面的示例中,我們在 thread1thread2 都完成后調用了 Join() 方法,確保主線程在所有子線程完成后才退出。這樣可以避免因為子線程仍在運行而導致資源無法釋放的問題。

0
永清县| 罗城| 怀远县| 佛冈县| 凤城市| 颍上县| 潢川县| 古丈县| 丰台区| 南澳县| 闵行区| 郁南县| 平顺县| 阜阳市| 左贡县| 泾川县| 双鸭山市| 驻马店市| 云安县| 云阳县| 翁源县| 明光市| 嵊州市| 冀州市| 阿图什市| 丰宁| 凤凰县| 长治市| 仁化县| 阳城县| 胶南市| 容城县| 兖州市| 高邮市| 安西县| 古田县| 蓬安县| 丰镇市| 莱阳市| 修文县| 吉林省|