[解決済み】セマフォとモニター、何が違うの?
質問
との大きな違いは何ですか? モニター と セマフォ ?
解決方法は?
A モニター は、複数のスレッドからアクセスされるように設計されたオブジェクトです。モニタオブジェクトのメンバ関数やメソッドは相互排他を強制するので、ある時点では1つのスレッドだけがオブジェクトに対して何らかのアクションを実行することができます。あるスレッドがオブジェクトのメンバ関数を実行中の場合、そのオブジェクトのメンバ関数を呼び出そうとする他のスレッドは、最初のスレッドが終了するまで待つ必要があります。
A セマフォ は下位レベルのオブジェクトです。セマフォを使用してモニターを実装することはよくあります。セマフォは本質的には単なるカウンタです。カウンタが正のとき、スレッドがセマフォを取得しようとすると、それが許可され、カウンタがデクリメントされます。スレッドが終了すると、セマフォを解放し、カウンタをインクリメントします。
もし、あるスレッドがセマフォを取得しようとしたときにすでにカウンタが0であれば、他のスレッドがセマフォを解放するまで待つ必要があります。あるスレッドがセマフォを解放したときに複数のスレッドが待っていた場合、そのうちの1つがセマフォを取得する。セマフォを解放するスレッドは、それを獲得したスレッドと同じである必要はありません。
モニターは公衆トイレのようなものです。一度に一人しか入れません。他の人が入ってこないように鍵をかけて、用を足し、出るときに鍵を開けるのです。
セマフォはレンタサイクルのようなものです。自転車の台数は決まっています。もしあなたが自転車を借りようとしたときに、その自転車が空いていれば借りることができますが、そうでなければ待たなければなりません。誰かが自転車を返すと、他の人がそれを使うことができます。自分が持っている自転車を他の人に渡して返してもらえばいい。
関連
-
[解決済み] Dask: dask delayでどのようにコードを並列化するか?
-
[解決済み] デッドロックとは何ですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] ロック、ミューテックス、セマフォの違いは何ですか?
-
[解決済み] JavaにおけるRunnableインターフェースとCallableインターフェースの違いについて
-
[解決済み] デッドロックとライブロックの違いは何ですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】Invoke()とBeginInvoke()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Not on FX application thread; currentThread = JavaFX Application Thread エラーを回避する方法は?
-
[解決済み] Dask: dask delayでどのようにコードを並列化するか?
-
[解決済み] POSIXシステムでのゾンビスレッド
-
[解決済み] "フリースレッド "と "スレッドセーフ "の違いについて
-
[解決済み] Win32 InterlockedExchange関数はどのような場合に使用するのですか?
-
[解決済み】スレッド間で共有されるリソースは何ですか?
-
[解決済み】セマフォとモニター、何が違うの?
-
[解決済み】Node.jsに対するHaskellの対応について教えてください。
-
[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?
-
[解決済み] Re-entrantロックとは何ですか?