多线程的时候应该使用哪一个?
_计数器 += 1
或
互锁.增量(ref _counter)
.
public class Demo
{
public void Main()
{
for (int i = 0; i < 5; i++)
{
new Thread(() => FuncA()).Start();
}
}
private int _counter;
public void FuncA()
{
lock (this) //lock or Monitor or Mutex or Semaphore ...
{
_counter += 1;
//OR
Interlocked.Increment(ref _counter);
}
}
}
您不需要同时使用
lock
和 Interlocked.Increment
中的一个或另一个,而不是同时使用两者。如果目标只是增加计数器,那么 Interlocked.Increment
应该是更好的选择。
lock (this)
另请参阅 - 为什么 lock(this) {...} 不好?