0

こんにちは=)次の問題の疑似コードを考え出そうとしていますが、セマフォの同期について少し混乱しているので、誰かが助けてくれることを願っています!

M 個のコンシューマーと M 個のプロデューサー、および同じ N サイズの 2 つのバッファーがあります。コンシューマーは一方のバッファーから消費し、プロデューサーはもう一方のバッファーで生成します。コンシューマー バッファーが空で、プロデューサー バッファーがいっぱいになると、バッファーがスワップされ、プロセスが続行されます。

セマフォを使用してこれらのプロセスを同期する方法についてのアイデアはありますか? ありがとうございました!

4

1 に答える 1

0

2 つのセマフォを使用できます。1 つはプロデューサー バッファー用、もう 1 つはコンシューマー バッファー用です。プロデューサーは書き込み操作ごとにロックされ、コンシューマーは読み取り操作ごとにロックされます。切り替えは両方のバッファをロックする必要があります。

ところで、プロデューサー バッファーがいっぱいで、コンシューマー バッファーが空でない場合はどうすればよいでしょうか。

于 2012-09-01T10:57:31.110 に答える