应该使用哪一个? “_counter += 1”或“Interlocked.Increment(ref _counter)”

问题描述 投票:0回答:1

多线程的时候应该使用哪一个?

_计数器 += 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);
        }
    }
}
c# asp.net locking mutex semaphore
1个回答
0
投票

您不需要同时使用

lock
Interlocked.Increment
中的一个或另一个,而不是同时使用两者。如果目标只是增加计数器,那么
Interlocked.Increment
应该是更好的选择。

lock (this)

另请参阅 - 为什么 lock(this) {...} 不好?

© www.soinside.com 2019 - 2024. All rights reserved.