• ベストアンサー

C#で、優先順位をつけてメソッドの呼び出しを調整したいのですが、どんな

C#で、優先順位をつけてメソッドの呼び出しを調整したいのですが、どんな方法があるでしょうか? ・メソッドA,B,Cがある ・共通に利用するメソッドQがある ・A,B,Cは、別々のスレッドからメソッドQを呼び出す ・他のメソッドがQを利用している間は、B、Cは待ち状態にしたい ・A>B>Cの優先順位があり、BがQを使用していて、Cが待ち状態の時、その後AがメソッドQを利用を要求したら、次にQを使えるのはAにしたい どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

まじめに頑張るなら PriorityQueue. 手を抜くなら「どうせ優先順位は 3つしかない」と思って配列 + 適当なリスト構造.

noname#230227
質問者

お礼

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

その他の回答 (2)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

>キューに利用要求を入れても、入れた順にしか取り出せないので、優先度を付けられないと思うのですが、、 既にあるクラスを利用するのではなくて、キューの管理クラスを自分で作成するんです。 キューのアルゴリズムは分かりますよね? スレッドセーフに組むこともお忘れ無く。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

メソッドQの利用要求キューを作って、利用要求が許可されたらメソッドQを処理するってのはどうでしょう? キューからの取り出し時は、A>B>Cの優先順位で処理すれば良いと思います。

noname#230227
質問者

補足

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

関連するQ&A