溫馨提示×

C#多線程中的鎖是什么

c#
小樊
111
2024-06-28 09:22:31
欄目: 編程語言

在C#多線程編程中,鎖是一種用于控制多個(gè)線程對共享資源訪問的機(jī)制。通過使用鎖,可以確保在任何給定時(shí)間只有一個(gè)線程可以訪問共享資源,從而避免數(shù)據(jù)競爭和不一致性的問題。

在C#中,可以使用lock關(guān)鍵字來創(chuàng)建鎖。當(dāng)一個(gè)線程進(jìn)入lock代碼塊時(shí),它會嘗試獲取鎖。如果鎖已經(jīng)被其他線程獲取,則該線程會被阻塞,直到鎖被釋放。一旦線程執(zhí)行完lock代碼塊中的邏輯,鎖會被自動釋放,允許其他線程獲取該鎖。

示例代碼如下:

class Program
{
    private static object lockObj = new object();

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

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

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

    static void DoWork()
    {
        lock (lockObj)
        {
            // 執(zhí)行需要保護(hù)的共享資源訪問操作
        }
    }
}

在上面的示例中,兩個(gè)線程t1t2都會調(diào)用DoWork方法,而DoWork方法中的操作是通過lock關(guān)鍵字來保護(hù)的,確保同一時(shí)間只有一個(gè)線程可以訪問共享資源。

0