c# - Interlocked.Increment 实际上在做什么?

标签 c# multithreading interlocked

Interlocked.Increment 似乎是需要在多线程代码中执行的最标准/最简单的操作之一。

我假设该方法的功能是某种排序模式,任何具有线程经验的人都能够复制。

所以基本上我想知道的是,是否有人可以提供 Interlocked.Increment 方法实际上在内部执行的操作的精确副本(并解释其工作原理)? (我一直在寻找实际方法的来源,但一直找不到)

最佳答案

Albahari先生说它做了两件事:

  • 让操作系统和虚拟机知道操作的原子性,例如在 32 位系统上对 64 位值的操作将是原子的
  • 生成 full fence 限制互锁变量的重新排序和缓存

看看那个链接 - 它提供了一些很好的例子。

关于c# - Interlocked.Increment 实际上在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700100/

相关文章:

c# - 将所有控制台输出保存到文本文件

c# - 处理过多导致后台 worker 崩溃?

java - 在 Android 的 Java 中同步访问对象的推荐方法是什么?

c++ - pthread_cond_wait/signal 和 mutex 未按预期工作

c# - 可以使用 Interlocked.CompareExchange with a Bit 吗?

c# - 使用 XmlNode.selectSingleNode 选择一个节点

c# - 创建具有多个 OR 和 AND 条件的 LINQ 表达式树

.net - 这似乎是并发集合/队列组合的合理方法吗?

c++ - InterlockedExchange Visual Studio 2010 内在

concurrency - 联锁平均值 (CAS) 不适用于 HLSL