c# - C# 中的++ 操作是原子的吗?

标签 c# .net

我有多个线程通过“++”或“--”操作访问单个 Int32 变量。

我们是否需要在访问之前锁定,如下所示?

    lock (idleAgentsLock)
    {
       idleAgents--;  //we should place it here.
    }

或者不加锁会有什么后果?

最佳答案

它不是“原子的”,不是多线程意义上的。但是,至少在理论上,您的锁可以保护操作。如果有疑问,您当然可以改用 Interlocked.Decrement

关于c# - C# 中的++ 操作是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872057/

相关文章:

c# - 我应该使用 dispatcher.Invoke(...) 还是 ObserveOn(dispatcher)?

c# - 难以从列表中删除项目

.net - 默认情况下如何拒绝对 Web API 项目的授权

c# - 在 C# 中读取 Excel 文件并在数据库中插入记录 - Windows Azure

c# - 从 Expression<Func<T, object>> 实例获取实际返回类型

c# - 制作像泰拉瑞亚这样的灯光系统?

c# - 周期性任务无效跨线程访问异常

c# - 捕获鼠标在窗体上的任意位置单击(没有 IMessageFilter)

c# - 有没有更好的方法来编写大量重复的 "if(string.IsNullOrEmpty())"实例

c# - 为什么 ProtoBuf-Net 在序列化字符串列表时性能如此差?