gpt4 book ai didi

c# - 加入线程时是否需要内存屏障?

转载 作者:太空狗 更新时间:2023-10-29 23:33:06 26 4
gpt4 key购买 nike

如果一个线程 A 产生另一个线程 B,其唯一目的是写入一个变量 V,然后等待它终止,是否需要内存屏障来确保线程 A 上对 V 的后续读取是新鲜的?我不确定终止/加入操作中是否存在使它们变得多余的隐式障碍。

这是一个例子:

public static T ExecuteWithCustomStackSize<T>
(Func<T> func, int stackSize)
{
T result = default(T);

var thread = new Thread(
() =>
{
result = func();
Thread.MemoryBarrier(); // Required?
}
, stackSize);

thread.Start();
thread.Join();

Thread.MemoryBarrier(); // Required?
return result;
}

是否需要上述代码段中的一个/两个(或更多)障碍?

最佳答案

不,同步机制会产生隐式内存栅栏。一个线程修改的所有数据在线程加入后都是可见的。

关于c# - 加入线程时是否需要内存屏障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444891/

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