0

リーダー/ライターのスレッドについて質問があり、複雑にしすぎたくなかったので、アドバイスを求めてここに来ました。

最終的に4つのスレッドによって読み取られ、3によって書き込まれる配列があります(1つのリーダー3つの読み取り/書き込み)。私の目標は、読み取り操作で別のスレッドをブロックせず、書き込み操作ですべてのスレッドをブロックして終了することでした。スレッドごとに1つのセマフォでこれを行う方法を知っていると確信していますが、バイナリ、カウント、またはミューテックスのセマフォ(またはスレッドごとに1つ未満のセマフォ)だけでこれを実現する方法はありますか。VxWorksセマフォアライブラリを使用します。

4

2 に答える 2

1

VxWorksがPOSIXのようなある種の共有/rwlockをサポートしていない限り、単純なものよりも少し複雑になるのではないかと思います。

POSIXpthread_rwlock_tをお持ちの場合は、それを使用することをお勧めします。そうしない場合、VxWorksが同等の代替手段を提供しない場合は、他のプリミティブを使用して構築する必要があります。2つのセマフォと3つのミューテックスおよび2つの整数変数の上にrwlockを構築することが可能です。「リーダー」と「ライター」による並行制御を参照してください。PJクルトワ、F。ヘイマンズ、DLパルナス。MBLE研究所; ベルギー、ブリュッセル

于 2013-02-01T13:34:30.677 に答える
0

リーダーが1つしかないため、相互排除の問題とまったく同じです(1つのスレッドのみを含めることができます)。シングルバイナリセマフォを直接使用するだけで十分です。1つで開始し、Pが入ると、Vが出る。

于 2013-02-01T13:26:49.017 に答える