中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c# wait 與 notifyAll 怎樣用

c#
小樊
81
2024-11-26 11:39:20
欄目: 編程語言

在C#中,WaitNotifyAll是用于線程同步的方法,它們主要用于協調多個線程之間的操作。這兩個方法通常在多線程編程中使用,以確保在某個條件滿足之前,線程會等待,直到其他線程改變了共享資源的狀態。

Wait方法用于讓當前線程等待,直到另一個線程調用同一對象的NotifyAll方法或Notify方法。NotifyAll方法會喚醒所有等待該對象的線程,而Notify方法只會喚醒一個等待該對象的線程。

下面是一個簡單的示例,展示了如何使用WaitNotifyAll方法:

using System;
using System.Threading;

class Program
{
    static object lockObject = new object();
    static int sharedResource = 0;

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

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

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

    static void Thread1()
    {
        lock (lockObject)
        {
            Console.WriteLine("Thread 1: Waiting for the condition...");
            Monitor.Wait(lockObject);
            Console.WriteLine("Thread 1: The condition is met. Accessing the shared resource.");
            sharedResource++;
        }
    }

    static void Thread2()
    {
        lock (lockObject)
        {
            Console.WriteLine("Thread 2: Waiting for the condition...");
            Monitor.Wait(lockObject);
            Console.WriteLine("Thread 2: The condition is met. Accessing the shared resource.");
            sharedResource++;
        }
    }
}

在這個示例中,我們有兩個線程Thread1Thread2。它們都嘗試訪問共享資源sharedResource,但在訪問之前,它們需要等待某個條件滿足。為了實現這一點,我們使用了一個鎖對象lockObject,并在訪問共享資源之前調用Monitor.Wait(lockObject)方法。當另一個線程改變共享資源的狀態時,它將調用Monitor.NotifyAll(lockObject)方法來喚醒所有等待的線程。

0
江油市| 如皋市| 玉门市| 永城市| 从化市| 濮阳市| 怀安县| 湄潭县| 宁阳县| 阿坝| 招远市| 丹巴县| 涿州市| 乐都县| 德兴市| 凌源市| 苍山县| 江都市| 拉萨市| 包头市| 深州市| 遂川县| 威远县| 桃源县| 桂阳县| 满洲里市| 桦甸市| 西丰县| 鲁甸县| 昌乐县| 林甸县| 鲜城| 南召县| 措美县| 东乡| 南京市| 隆德县| 东城区| 新沂市| 宁武县| 桃源县|