我有多个线程通过“++”或“--”操作访问单个 Int32 变量。
我们是否需要在访问之前锁定,如下所示?
lock (idleAgentsLock)
{
idleAgents--; //we should place it here.
}
或者不加锁会有什么后果?
最佳答案
它不是“原子的”,不是多线程意义上的。但是,至少在理论上,您的锁可以保护操作。如果有疑问,您当然可以改用 Interlocked.Decrement
。
关于c# - C# 中的++ 操作是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872057/