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

溫馨提示×

c# autoresetevent的功能是什么

c#
小樊
81
2024-11-18 10:59:16
欄目: 編程語言

AutoResetEvent是C#中的一個同步原語,它用于在多線程環境中控制對共享資源的訪問

AutoResetEvent的主要功能如下:

  1. 初始化:創建一個AutoResetEvent對象時,可以指定一個初始狀態。如果指定為true,則表示事件已經觸發,等待的線程可以立即獲得信號;如果指定為false,則表示事件未觸發,等待的線程將被阻塞,直到事件被觸發。

  2. 等待:線程可以通過調用WaitOne()方法來等待事件被觸發。如果事件已經觸發,則線程立即獲得信號并繼續執行;如果事件未觸發,則線程被阻塞,直到事件被觸發。

  3. 觸發:線程可以通過調用Set()方法來觸發事件。這將喚醒所有等待該事件的線程。如果有多個線程正在等待事件,那么只有一個線程會被喚醒,其他線程將繼續等待。

  4. 重置:線程可以通過調用Reset()方法來重置事件的狀態。這將導致所有等待該事件的線程再次被阻塞,直到事件被重新觸發。

下面是一個簡單的AutoResetEvent示例:

using System;
using System.Threading;

class Program
{
    static AutoResetEvent _autoResetEvent = new AutoResetEvent(false);

    static void Main()
    {
        Thread t1 = new Thread(ThreadMethod1);
        Thread t2 = new Thread(ThreadMethod2);

        t1.Start();
        t2.Start();

        t1.Join();
        t2.Join();
    }

    static void ThreadMethod1()
    {
        Console.WriteLine("Thread 1 waiting for event...");
        _autoResetEvent.WaitOne(); // 等待事件被觸發
        Console.WriteLine("Thread 1: Event triggered!");
    }

    static void ThreadMethod2()
    {
        Console.WriteLine("Thread 2 waiting for event...");
        _autoResetEvent.WaitOne(); // 等待事件被觸發
        Console.WriteLine("Thread 2: Event triggered!");
    }
}

在這個示例中,我們創建了兩個線程t1t2,它們都在等待同一個AutoResetEvent對象_autoResetEvent被觸發。主線程首先啟動這兩個線程,然后等待它們完成。當主線程調用_autoResetEvent.Set()方法時,兩個等待的線程都將被喚醒并繼續執行。

0
崇明县| 沐川县| 上栗县| 九台市| 开鲁县| 锡林郭勒盟| 阜康市| 县级市| 和林格尔县| 南康市| 大厂| 会昌县| 宜兰市| 大冶市| 临城县| 苍山县| 凌云县| 临潭县| 顺义区| 太仓市| 陵川县| 呼玛县| 莲花县| 海林市| 吉安县| 图们市| 休宁县| 锡林浩特市| 湖州市| 三河市| 清苑县| 西昌市| 乳山市| 托里县| 深圳市| 阳曲县| 冷水江市| 高淳县| 叙永县| 郸城县| 高雄县|