シナリオ:
2 つのほぼ同一のベクトルがあります。それらは、単一のライターと複数のリーダーにサービスを提供するダブル バッファーのように機能します。1 つのベクトルはスレッド グループによって読み取られ、もう 1 つのベクトルは単一のスレッドによって書き込まれます。書き込みスレッドが更新を完了するとswap()
、2 つのベクトルになります。このようにして、ライターが次の準備をしている間、読者は読み続けることができ、ライターはframe
読者のことを心配することなく書き続けることができます。
質問:
の実行中に 2 つのベクトルのサイズが同じであることが保証されているswap
場合、スワップを行うときにロック メカニズムを使用しなくても安全ですか? swap
そうでない場合、ライタースレッドのオーバーヘッドが大きくなりすぎずに安全であることを確認するための最善の方法は何でしょうか?