[#Multiprocessor_Programming](Multiprocessor%20Programming%201.md)
- [[Bounded-buffer problem]]とも
- [[ダイクストラ]]が提起した
- Producer
- 循環プロセス
- サイクルを回すたびに、Consumerによって処理されなければならない情報の一部(=アイテム)を生産する
- バッファにアイテムを追加する
- バッファがいっぱいのときは、しばらく待機
- Consumer
- 循環プロセス
- サイクルを回すたびに、Producerが生産した情報の次の部分を処理することができる
- バッファからアイテムを取り出して、処理をする
- バッファが空のときは、しばらく待機
- ProducerとConsumerは、バッファを介して接続されている
- ProducerとConsumerが[[Concurrent]]に動作しているとき、どうやって[[競合状態]]を回避すればよいか? というのがProducer-consumer problem
- 解決策として、[[Semaphore]]が使われる
参考
- [https://en.wikipedia.org/wiki/Producer–consumer_problem](https://en.wikipedia.org/wiki/Producer–consumer_problem)