3

複数のスレッドが特定のバッファー (サイズに制限なし) に書き込むことができ、これらの制約がすべて適用される状況を想像してください。

  1. すべてのスレッドが開始する前に、バッファーはゼロに初期化されます。
  2. スレッドは、バッファに書き込むかどうかを指定できます。
  3. スレッドがバッファに書き込みを行う場合、特定のバイト文字列を書き込みます ( 0 だけでなく、すべてのスレッドで同じであると呼びましょう) VV
  4. バッファから読み取ったスレッドはありません。
  5. スレッドがバッファーに書き込むという事実と、スレッドがバッファーに書き込む内容は、他のスレッドがバッファーに書き込んだかどうかには依存しません。
  6. スレッドがバッファへの書き込みを開始すると、完全に書き込みます。
  7. スレッドは、バイトの正確な順序に従わずにバッファーに書き込みます。

質問: すべてのスレッドが停止した後 (これは、スレッドがバッファへの書き込みを開始した場合にのみ発生します)、実際の、または少なくとも妥当なアーキテクチャの下で、次のことが保証されますか?

  1. バッファにすべてゼロが含まれているか、
  2. またはバッファには正確にV?が含まれています

そうでない場合、バイトの別の文字列、それを と呼ぶV'、が書き込まれる可能性があることを示す一貫した議論はありますか? Vもしそうなら、との違いは何V'ですか? なんで?

4

2 に答える 2

1

番号 6 が決め手と思われます。基本的には、バッファへの書き込みはアトミックで中断不可能であると述べています。したがって、コンテンツは 0 または一貫性のあるv.

もちろん、ミューテックスのようなものを使用しない限り、これはスレッドの通常のケースではありません。

于 2013-05-16T21:48:50.097 に答える