スレッド A が、変数 V への書き込みのみを目的として別のスレッド B を生成し、それが終了するのを待つ場合、スレッド 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;
}
上記のスニペットのバリアのいずれかまたは両方 (またはそれ以上) が必要ですか?