gpt4 book ai didi

c# - 需要澄清 Thread.MemoryBarrier()

转载 作者:行者123 更新时间:2023-11-30 14:16:11 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why we need Thread.MemoryBarrier()?

摘自 O'Reilly 的 C# in a Nutshell:

class Foo
{
int _answer;
bool _complete;
void A()
{
_answer = 123;
Thread.MemoryBarrier(); // Barrier 1
_complete = true;
Thread.MemoryBarrier(); // Barrier 2
}
void B()
{
Thread.MemoryBarrier(); // Barrier 3
if (_complete)
{
Thread.MemoryBarrier(); // Barrier 4
Console.WriteLine (_answer);
}
}
}

假设方法 A 和 B 在不同的线程上同时运行:


作者说:“障碍 1 和 4 阻止这个例子写“0”。障碍 2 和 3 提供了一个新鲜度保证:他们确保如果 B 在 A 之后运行,阅读 _complete 将评估为真。”

我的问题是:

  1. 为什么需要 Barrier 4?障碍 1 还不够吗?
  2. 为什么需要 2 和 3?
  3. 据我了解,屏障阻止在其后续指令之后执行其所在位置之前的指令,对吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com