c# - 尝试理解 Thread.MemoryBarrier() 和上下文切换之间的关系

标签 c# .net multithreading context-switch memory-barriers

既然上下文切换可能发生在指令执行过程中的任何一点,我现在想知道为什么“部分有问题”的代码(这两条指令)有意义,如果上下文切换可以在任何指令之间发生,我们可能会第二条指令中的不同 CPU 内核上。

void B()
  {
    Thread.MemoryBarrier();    // Barrier 3
    if (_complete)
    {
      //PART IN QUESTION
      Thread.MemoryBarrier();       // Barrier 4
      Console.WriteLine (_answer);
      //END PART IN QUESTION
    }
  }

这里关于 MemoryBarrier 的描述似乎并没有给出保证 MemoryBarrier调用后不会切换CPU。

(这与此 question 相关)

最佳答案

无法保证 MemoryBarrier 周围是否会发生上下文切换。这些是正交概念。

关于c# - 尝试理解 Thread.MemoryBarrier() 和上下文切换之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260758/

相关文章:

c# - 量化垃圾收集与显式内存管理的性能

c# - 如何查询内存中的一个DataTable来填充另一个数据表

c++ - 线程不刷新数据,在屏幕上显示数据时出错

c# - TPL 如何执行 'Call-Back'

c# - C#中如何表示4个字节的字符

c# - SetSystemTime - UTC 或本地时间?

c# - 使用 MVVM 如何从许多可视组件或选项更新标签?

c++ - Win32 -- 如何管理我的鼠标钩子(Hook)线程

c# - 如何从具有 ASPX 扩展名的 URL 提供图像?

c# - 任务(异步,等待): Do I need to enter these are all connecting layers or only ones with ASYNC calls i. e HttpClient.GetAsync?