例: 生産者/消費者問題とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 例: 生産者/消費者問題の意味・解説 

例: 生産者/消費者問題

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/15 04:56 UTC 版)

セマフォ」の記事における「例: 生産者/消費者問題」の解説

生産者/消費者問題英語版)では、1つ実行単位生産者)がデータ生成し、もう1つ実行単位消費者)がそれらを受け取って使用するデータ受け渡し最大サイズNのキュー行い次のような条件に従う。 キューが空の場合消費者生産者データ生成するのを待たなければならないキュー満杯場合生産者消費者データ消費するのを待たなければならない生産者/消費者問題セマフォ解決する場合キューの状態を2つセマフォで表す。emptyCount はキュー上の空いているスロット数を保持しfullCountキュー上の要素数を保持する完全性維持するには、emptyCount を実際空きスロット数より小さくなるようにし、fullCount実際キュー上の要素数より小さくなるようにする(どちらも実際の数を越えてならない)。空きスロット要素は、空の箱と満たされた箱という2種類資源表しており、セマフォ emptyCount と fullCount はそれら資源についての制御管理する。 バイナリセマフォ useQueue は、例え2つ生産者同時にデータキュー格納しようとするなどといった不正な状態が発生しないことを保証するためにある。このバイナリセマフォはミューテックス代替することもできる。 emptyCount の初期値は N、fullCount初期値は0、useQueue の初期値は1である。生産者次のような処理を繰り返すproduce: P(emptyCount) P(useQueue) putItemIntoQueue(item) V(useQueue) V(fullCount) 消費者次のような処理を繰り返すconsume: P(fullCount) P(useQueue) item ← getItemFromQueue() V(useQueue) V(emptyCount) 具体的に次のような動作をする。 1つ消費者クリティカルセクションに入る。fullCount は0なので、消費者ブロックするいくつかの生産者生産者側のクリティカルセクションに入る。emptyCount で制限されるのでN以上の生産者クリティカルセクション入れない生産者は useQueue により一度1つずつキューアクセスし、データキュー入れていく。 最初生産者クリティカルセクション抜けるとき、fullCountインクリメントされるので、ブロックしていた消費者クリティカルセクション内の理に進むことができる。 emptyCount はキュー上の実際空きスロット数より小さくなる可能性がある。例えば、複数生産者デクリメント行っても、useQueue によってキューへのデータ投入逐次化されるためである。したがって常に emptyCount + fullCount ≤ N であり、等号成り立つのは生産者消費者も全くクリティカルセクション入ってない場合だけである。

※この「例: 生産者/消費者問題」の解説は、「セマフォ」の解説の一部です。
「例: 生産者/消費者問題」を含む「セマフォ」の記事については、「セマフォ」の概要を参照ください。

ウィキペディア小見出し辞書の「例: 生産者/消費者問題」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「例: 生産者/消費者問題」の関連用語

例: 生産者/消費者問題のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



例: 生産者/消費者問題のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのセマフォ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS