以下、引用---
生産者-消費者問題(有限バッファ問題) マルチスレッドのプログラムでは、おにぎり作りのような協調作業が必要なことがよくあります。その場合、複数のスレッドが協調するわけですから、各スレッドが握り係や海苔係のように動作するということになります。 おにぎり作りの例で見たように、流れ作業において、握り係と海苔係の作業の速度に差があることから生じる問題のことを、「生産者-消費者問題(producer-consumer problem)」と言います。これは、生産者が何かを生産し、消費者がそれを消費するときに起きる問題です。 おにぎり作りで言えば、握り係は「生産者」で、(海苔を巻いていない)おにぎりを生産します。一方、海苔係は「消費者」で、握り係が生産したおにぎりを消費します。マルチスレッドのプログラムであれば、あるスレッド(生産者スレッド)が何らかのデータを生産し、別のスレッド(消費者スレッド)がそのデータを消費します。 生産者-消費者問題を解決するためには、一般に、生産者と消費者の間にバッファを置きます。そのバッファは、おにぎり作りにおいて、皿が果たしていた役割を担います。また、通常そのバッファの大きさには限りがあります。つまり、お皿に載せられるおにぎりの個数には限りがあるということです。なお、バッファのほうに着目して、生産者-消費者問題のことを「有限バッファ問題(bounded buffer problem)」と呼ぶこともあります。 マルチスレッドにおける生産者-消費者問題を解決するというのは、生産者スレッドと消費者スレッドが有限のバッファを介して協調動作するプログラムを作るということです。 ところで、おにぎり作りの例で説明したように、待ち方にはビジー・ウェイトと通知の2とおりがありました。 ビジー・ウェイトの場合、待つためだけにそのスレッドが動作し続けてコンピュータの資源を消費することになるので、あまり良い方法ではありません。一方、通知による方法の場合、スレッドが休憩室で休んでいる間は、そのコンピュータの資源をほかの用途に使えます(人間だと、頻繁に寝たり起きたりしたらそれだけで疲れてしまいますが、スレッドであれば問題はありません)。したがって、生産者-消費者問題は通知による方法で解決するのが妥当です。 以下のような動作を実現できれば、生産者-消費者問題を解決することができます。 ●生産者は、バッファがいっぱいなら待つ ●消費者は、バッファがいっぱいでなくなったら生産者に通知する ●消費者は、バッファが空なら待つ ●生産者は、バッファが空でなくなったら消費者に通知する 念のため、おにぎり作りの場合に当てはめてみると、以下のようになります。 ●握り係は、皿がいっぱいなら寝る ●海苔係は、皿がいっぱいでなくなったら握り係を起こす ●海苔係は、皿が空なら寝る ●握り係は、皿が空でなくなったら海苔係を起こす これできちんと協調作業ができそうですね。 ----- 参考文献:http://www.itarchitect.jp/technology_and_programming/-/10941.html
by besttseb99
| 2007-05-30 01:58
| Study
|
カテゴリ
Study Business Life Music Hobby Online Game Draw Memo World Politics Economy OS-software-system Problem Solving Vehicle Technology Link
■My Tool
・hatena Logical Cube ■Music ・Fusion Radio Chicago ・Solo Piano Radio ・SKY.fm piano jazz ・Simplynoise.com ・BBC Radio ■Picture ・Exblog Fhoto Gallery ■Ragnarok Online ・nicovideo-mylist ・zoome-mylist ・fall down ・healus ■Second Life ・Dance Island 以前の記事
2017年 11月 2016年 10月 2015年 06月 2013年 12月 2013年 05月 2012年 10月 2012年 07月 2012年 05月 2012年 03月 2012年 02月 2012年 01月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 11月 2009年 10月 2009年 09月 2009年 08月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 10月 2007年 09月 2007年 08月 2007年 07月 2007年 06月 2007年 05月 2007年 04月 検索
その他のジャンル
ブクログ besttseb99の本棚
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||