セマフォsがあり、P(s)を呼び出してそれを待っているスレッドが複数あるとします。そして、V(s)はそれらの間で正確に1つのスレッドを起動する。システムが決定を下す代わりに、指定されたスレッドを起動する方法はありますか?例えば、理髪師の問題では、理髪師がそれぞれのヘアカットの後で、理髪師は無作為なものではなく最も長い待機顧客にサービスを提供したいと考えています。Vを使って指定されたPを起こす方法は?
1
A
答えて
1
Pを格納するためにキューを使用するだけで済みます。それはあなたが最も長い待ち時間に基づいてそれをさせるでしょう。そうでなければ、あなたが望むどんなパラメーターにも基づいてソートされたツリーに格納することができ、必要に応じて削除することができます。
私は、それが難しいとは限らないPのための何らかの並べ替えの仕組みになると思います。
1
セマフォの実装によって異なります。待機中のスレッドのキューを作成し、正しい順序で通知するスマートセマフォを使用する必要があります。私は、Windows上での通常のセマフォーの実装はそのようには動作しないと思います。これはOSに信号を送信するだけで、待機中のスレッドのいずれかに信号を送信します。それがより簡単に実装されるので、これがlifoスタックを使用するなら、それは理にかなっています。 しかし、リンクリストやサイクリック配列のようなキューを実装することで、これを自分で構築することは難しくありません。
1
いいえ、クラシックセマフォ自体ではありません。キューのような振る舞いをしたい場合は、キューの共有データ構造を保護するためにキューを作成します(セマフォを使用するか、またはそれらの組み合わせを使用します)。
実際には、セマフォーは理論的にはすべて同期化する必要がありますが、裸のセマフォーを直接使用した実体コードを書くことはめったにありません。ほとんどの場合、セマフォを使用して、その構造内の重要なデータを保護するために、より高いレベルの構造を構築します。
関連する問題
- 1. 「v = 2、v = 2.x、またはv = 2.s」と指定すると、現在使用されているGoogle Maps APIのバージョンはどれですか?
- 2. Kubernetesによって起動されたコンテナのworkdirを設定する方法
- 3. erlang.mkを使ってアプリケーションの起動順序を指定する
- 4. フレックスでUITextFieldの指定された線を指定する方法は?
- 5. は、私は次のことを持って指定されたchar
- 6. pydaemonを使ってデーモンプロセスの名前を指定する方法
- 7. テキストファイルで指定されたファイルでgrepを使って検索するには?
- 8. 指定された時間プログラムを実行する方法は?
- 9. 指定された順序でリストをソートする方法は?
- 10. 指定されたURL(春)のコントローラを決定する方法
- 11. C#ファイルのXAMLで指定された変数を使用する方法は?
- 12. 指定したプロセスでアプリケーションを起動する方法を指定しますか?コマンドline.Iで指定されたプロセスでアプリケーションを起動するように指定する方法
- 13. 指定されたdivにAJAXを使ってテキストを返しますか?
- 14. 型付きDataSetがこれは約C#型指定されたデータセット</p> <p>私は型付きデータセットを持っている問題
- 15. 指定されたDTDに対してxhtmlファイルを検証する方法は?
- 16. dipを使ってwebview cssで画像サイズを指定する方法は?
- 17. ユーザ指定の値を使ってOpenGLを使ってプロットする/値を求める方法は?
- 18. Spring起動グラードにLauncherを指定する方法は?
- 19. IronPythonで起動スクリプトを指定する方法は?
- 20. UIViewを指定されたCGPointに拡大(ズーム)する方法
- 21. 指定された時間後にバックグラウンドワーカーをキャンセルする方法#
- 22. qtで指定されたウィジェットを縮尺する方法
- 23. 指定された表スペースにデータをインポートする方法
- 24. System.InvalidCastExceptionの:指定されたキャストはWatiNを使用して
- 25. 誤って奇妙なSQLクエリを指定しました。何が起こった?
- 26. ポインタを使って構造体のベクトルを指す方法は?
- 27. Squeelを使用してこのクエリを指定する方法は?
- 28. ポートを指定してコマンドラインでapache2を起動する方法は?
- 29. EBSのサイズを指定して、BotoでEC2インスタンスを起動する方法は?
- 30. jQueryを使用して指定された値を含むXML属性を照合する方法は?
'language-agnostic'タグを無視します:' java.util.concurrent.Semaphore'は先入れ先出しを保証する 'fairNess'を持っています。しかし、これは答えではない。なぜなら、指定は別のパラメータに基づくかもしれないからである。 – khachik