2016-03-19 17 views
0

制限付きの待機条件でセマフォを実装する方法は何ですか?セマフォを使用したバインド待機

私は、セマフォを待っているプロセスのリストをFIFOとして維持することによって、制限付き待機基準に従うことができることを知っています。 しかし、使用しているリストのタイプに制約を課すことなくこれを行う他の方法がありますか?

+0

一般に、 IMEでは、セマフォのスレッドコンテナはFIFOキューです。私はあなたがソースを持っているならば、それを推測する。 Linuxの場合、何らかの理由で別のリストクラスを使用することもできます(?)。 –

答えて

0

あり、あなたが望む複雑な生産者 - 消費者クラスのいずれかの種類を構築止めるものは何もありませんが、些細なことができます。

1)は、両方の生産のためのスレッド管理データへのアクセスを制御するためにミューテックスを使用し、消費者スレッド。

2)ミューテックスの内部では、どのような複雑なアルゴリズムやコンテナを使用しても問題ありません。

3)スレッドが何らかの理由で処理できないことが分かった場合、スレッドはセマフォを取得し、管理データに格納し、ミューテックスを終了し、セマフォを待つ必要があります。

4)別のスレッドの実行を許可する可能性のあるリソースをリリースする必要がある場合は、mutexに入り、管理データを分析し、実行可能なスレッドを見つけたら、ミューテックスを出る前のセマフォ

これは「My Weird Thread Locking/Management Requirement Thingy」の一般的なものです。これは、madcademic wonderContainers(以下で定義されるような可変ジオメトリ、複数レベルのフィードバックスーパーキューを使用する必要があります)、複数のリソース制約を狂わせます(スレッドAB24は5台の車、3台の駐車用ボラード、ピンクの歯ブラシ、爆発的な自殺 - ベルト)、そして金曜日の午後に教授たちがテキーラのボトルを夢見た奇妙で素晴らしいものがあります。

関連する問題