6

このシナリオで私が何をすべきかについてあなたの考えを得ることができるかどうか疑問に思いました。

4〜8個のスレッドがあり、スレッドによってのみ読み取られる、書き込まれることのない値のベクトルがあるとします。

スレッドごとにベクターのコピーを作成し、スレッド間でスレッドをロックせずに、共有コピーにアクセスしようとするオプションがあります。または、ベクターの1つのコピーをロックして、すべてのスレッドがそれにアクセスできるようにすることもできます。

ベクトルをコピーする場合と比較して、スレッドロックのレイテンシはどのくらいですか?ベクトルをコピーするよりもロックのオーバーヘッドを速くするには、ベクトルをどのくらい大きくする必要がありますか?

4

2 に答える 2

12

スレッドが書き込みを行わない場合は、ロックやコピーなしで安全に共有できます。データの競合は、書き込みアクセスが関係している場合にのみ発生する可能性があります。

于 2012-05-30T21:10:27.103 に答える
7

スレッドがベクトルにアクセスし始めた後もベクトルが変更されないと仮定すると、ベクトルをロックする必要はありません。リーダースレッドが読み取りを開始する前に、ベクターに入力されたスレッドの入力が終了した場合は、それ以上同期しなくても安全です。

于 2012-05-30T21:11:44.710 に答える