4

アクセスするための2つのメソッドを持つデータ構造があります:query()とmodify()。複数のスレッドが同時に query() を使用できますが、modify() に入ることができるスレッドは 1 つだけであり、同時に query() を使用するすべてのスレッドは、modify() でアクセスが発生する前に終了する必要があります。

このデータ構造を C++ でスレッドセーフにする最善の方法は何ですか?

(ブースト読み取り/書き込みロックについて調べましたが、ミューテックスを使用するよりも3〜40倍遅くなる可能性があると言われました)

4

1 に答える 1

1

一般に、共有データはミューテックスで保護する必要があります。

ただし、共有データのタイプが整数の場合はstd::atomic、 を使用することも検討できます。これは通常、ミューテックスをロックするよりもはるかに高速です。

于 2012-10-15T09:11:39.003 に答える