c# - C# += 线程安全吗?

标签 c# multithreading

刚刚遇到一个程序,其中 += 用于线程间的共享变量,所以 += 线程安全,即以原子方式执行加法和赋值?

最佳答案

不,它不是线程安全的,因为它等同于:

int temp = orig + value;
orig = temp;

您可以使用 Interlocked.Add相反:

Interlocked.Add(ref orig, value);

关于c# - C# += 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326968/

相关文章:

c# - 操作对于 LINQ to SQL ExecuteCommand 事务的状态无效

java - Java Matcher.find 和 Matcher.group 的 C#/.NET 等效项

c# - 在 C# 中将 JSON 数组反序列化为对象

c++ - std::unique_lock<std::mutex> 还是 std::lock_guard<std::mutex>?

android - 启动画面的首选方式是什么? - 使用处理程序或创建新线程?

c++ - 使用 AWS-cpp-sdk 时,在退出程序之前等待异步调用返回

ios - 嵌套回调强引用循环

c# - 将方法作为参数传递 vs 直接调用方法

c# - 如何使用 C# 从 Visual Studio 传递管道变量

java - 为什么我的排队任务没有被线程池中的所有线程处理?