1

複数の同時ライターを許可できる読み取り/書き込みロックのバリアントを必要とする機能を開発しています。

標準の読み取り/書き込みロックにより、複数のリーダーまたは単一のライターを同時に実行できます。複数のリーダーまたは複数のライターを同時に許可できるバリアントが必要です。したがって、リーダーとライターを同時に許可することはできません。ただし、複数のライターを同時に許可したり、複数のリーダーを同時に許可したりしてもかまいません。

私がはっきりしていたことを願っています。これまでのところ、既存のアルゴリズムは見つかりませんでした。いくつかのキューなどを使用してこれを行ういくつかの方法を考えることができます。

皆さんは既存のスキームをご存知ですか?

ありがとう、

4

3 に答える 3

0

pthreads を使用している場合は、この質問の同期アプローチをご覧ください。

readerCount2 つの変数とwriterCountミューテックスで同様のアプローチを使用できます。リーダー スレッドでは、mutex をロックしてwriterCount == 0. この条件が満たされている場合は、readerCountを 1 増やしてロックを解除します。次に、読み取りを行います。完了したら、ミューテックスを再度ロックし、 をデクリメントしreaderCount、状態変化を通知してロックを解放します。

ライター スレッドは同じロジックに従いますが、条件readerCount == 0を待機し、代わりにインクリメント/デクリメントwriterCountします。

于 2013-06-22T15:28:50.663 に答える