在C#中,我們通常使用lock
關鍵字來實現同步,而不是像Java中的synchronized
關鍵字
public class Counter
{
private int _count;
public void Increment()
{
lock (this)
{
_count++;
}
}
public int GetCount()
{
return _count;
}
}
System.Threading.Tasks.Parallel
類:using System;
using System.Threading.Tasks;
using Xunit;
public class CounterTests
{
[Fact]
public void TestIncrement()
{
const int numberOfIterations = 1000;
var counter = new Counter();
Parallel.For(0, numberOfIterations, i =>
{
counter.Increment();
});
Assert.Equal(numberOfIterations, counter.GetCount());
}
}
這個測試將會創建1000個并發任務,每個任務都會調用Increment
方法。最后,我們斷言計數器的值等于迭代次數,以確保同步代碼正常工作。
注意:在實際應用中,為了避免死鎖和性能問題,請確保始終使用最佳實踐來實現同步代碼。例如,盡量避免在長時間運行的操作中使用鎖,并確保在鎖定代碼塊之外不要引用鎖定對象。