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

溫馨提示×

c# wait 與 notify 怎樣配合

c#
小樊
81
2024-11-26 12:23:21
欄目: 編程語言

在C#中,WaitNotify通常用于線程同步,它們是Object類中的兩個方法。Wait方法會使當前線程等待,直到另一個線程調用同一對象的NotifyNotifyAll方法。這兩個方法通常在多線程環境中使用,以避免資源競爭和數據不一致。

以下是一個簡單的示例,說明如何使用WaitNotify方法:

using System;
using System.Threading;

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

    static void Main(string[] args)
    {
        Thread t1 = new Thread(ThreadMethod1);
        Thread t2 = new Thread(ThreadMethod2);

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

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

    static void ThreadMethod1()
    {
        lock (lockObject)
        {
            Console.WriteLine("Thread 1: Waiting for resource...");
            Monitor.Wait(lockObject);
            Console.WriteLine("Thread 1: Resource acquired.");

            sharedResource++;
            Console.WriteLine($"Thread 1: Shared resource value: {sharedResource}");

            Monitor.Notify();
        }
    }

    static void ThreadMethod2()
    {
        lock (lockObject)
        {
            Console.WriteLine("Thread 2: Waiting for resource...");
            Monitor.Wait(lockObject);
            Console.WriteLine("Thread 2: Resource acquired.");

            sharedResource--;
            Console.WriteLine($"Thread 2: Shared resource value: {sharedResource}");

            Monitor.Notify();
        }
    }
}

在這個示例中,我們有兩個線程ThreadMethod1ThreadMethod2。它們都嘗試訪問共享資源sharedResource。為了避免數據不一致,我們使用lockObject對象來同步線程。當一個線程獲得鎖并訪問共享資源時,其他線程必須等待,直到鎖被釋放。

Monitor.Wait(lockObject)方法使當前線程等待,直到另一個線程調用Monitor.Notify(lockObject)Monitor.NotifyAll(lockObject)方法。在這個例子中,我們使用Monitor.Notify()方法喚醒一個等待的線程。當一個線程被喚醒并重新獲得鎖時,它將能夠訪問共享資源。

注意:在實際應用中,通常建議使用Monitor.Wait()Monitor.NotifyAll()而不是Thread.Wait()Thread.Notify(),因為它們提供了更好的封裝和錯誤處理。

0
龙里县| 青州市| 淮安市| 横山县| 毕节市| 神池县| 崇明县| 宽甸| 永吉县| 志丹县| 阳西县| 龙岩市| 姚安县| 安丘市| 香港| 班玛县| 枝江市| 共和县| 突泉县| 鄂州市| 蒲城县| 新疆| 沐川县| 嘉黎县| 谢通门县| 无极县| 北安市| 泰宁县| 郴州市| 兴宁市| 利津县| 溧水县| 乌什县| 贵港市| 盱眙县| 西乌珠穆沁旗| 鹤岗市| 哈密市| 普定县| 西平县| 安泽县|