dポイントプレゼントキャンペーン実施中!

C#で、優先順位をつけてメソッドの呼び出しを調整したいのですが、どんな方法があるでしょうか?

・メソッドA,B,Cがある
・共通に利用するメソッドQがある
・A,B,Cは、別々のスレッドからメソッドQを呼び出す
・他のメソッドがQを利用している間は、B、Cは待ち状態にしたい
・A>B>Cの優先順位があり、BがQを使用していて、Cが待ち状態の時、その後AがメソッドQを利用を要求したら、次にQを使えるのはAにしたい

どうぞよろしくお願いします。

A 回答 (3件)

まじめに頑張るなら PriorityQueue.


手を抜くなら「どうせ優先順位は 3つしかない」と思って配列 + 適当なリスト構造.
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2010/02/04 12:46

>キューに利用要求を入れても、入れた順にしか取り出せないので、優先度を付けられないと思うのですが、、



既にあるクラスを利用するのではなくて、キューの管理クラスを自分で作成するんです。
キューのアルゴリズムは分かりますよね?
スレッドセーフに組むこともお忘れ無く。
    • good
    • 0

メソッドQの利用要求キューを作って、利用要求が許可されたらメソッドQを処理するってのはどうでしょう?


キューからの取り出し時は、A>B>Cの優先順位で処理すれば良いと思います。

この回答への補足

回答ありがとうございます。

Queueクラスを使用するのでしょうか?
以前Queueクラスが使えないか調べたとき、キューへの取り出し(Deque)は、入れた順(Enque)にしか取り出せないようですよね?。
キューに利用要求を入れても、入れた順にしか取り出せないので、優先度を付けられないと思うのですが、、

補足日時:2010/02/03 16:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!