1つのロックコードブロック内に共有変数の複数の割り当てがある場合、これらの変更はすべて他のスレッドにすぐに表示され、同じオブジェクトでロックステートメントを入力すると他のプロセッサで実行される可能性があることを意味しますか?またはそのようなものはありません保証?
そこにある多くの例は、共通変数の単一の「セット」または「get」を示し、メモリバリアの詳細を説明していますが、より複雑なステートメントのセットが内部にある場合はどうなりますか?他のことをする関数呼び出しでさえある可能性がありますか?
このようなもの:
lock(sharedObject)
{
x = 10;
y = 20;
z = a + 10;
}
このコードが別のスレッドで実行されている場合(別のプロセッサで実行されている可能性があります)、変更の「可視性」について保証はありますか?
lock (sharedObject)
{
if (y == 10)
{
// Do something.
}
}
答えが「いいえ」の場合、おそらく、これらの変更がいつ表示されるかについての説明はありますか?