在C#中,synchronized
并不是一個關鍵字。但是,您可以使用 lock
語句來實現類似的功能,確保在同一時間只有一個線程可以訪問特定的代碼塊。
下面是一個使用 lock
語句的示例:
using System;
using System.Threading;
class Program
{
private static readonly object _lockObject = new object();
private static int _counter = 0;
static void Main(string[] args)
{
Thread t1 = new Thread(IncrementCounter);
Thread t2 = new Thread(IncrementCounter);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
Console.WriteLine("Counter: " + _counter);
}
private static void IncrementCounter()
{
for (int i = 0; i < 100000; i++)
{
lock (_lockObject)
{
_counter++;
}
}
}
}
在這個示例中,我們創建了兩個線程 t1
和 t2
,它們都會調用 IncrementCounter
方法。IncrementCounter
方法中的 lock
語句確保在同一時間只有一個線程可以訪問 _counter++
代碼塊。這樣可以防止多線程導致的競態條件,確保 _counter
的值在兩個線程完成后正確地增加到200000。