実験 3: プロセス制御-2 (セマフォ)

  1. 以下を必要とするプロデューサーおよびコンシューマー プログラムを作成します。

  1. プロデューサーとコンシューマーの 2 つのプログラムはウェアハウスを共有します。ウェアハウスは 100 バイトの容量を持つ通常のファイル (/tmp/store) です。

  1. 生産者は倉庫にリソースを置き、消費者は倉庫からリソースを消費します。リソースは数字「1、2、3、4、5、6、7、8、9、0」であり、リソースは数字であり、10 の数字が周期的に生成されます;

  1. プロデューサはウェアハウス (/tmp/store) を作成し、1 秒間隔でリソースを生成します。ウェアハウスがいっぱいになる (リソース数が 100 に達する) と、プロデューサーは生産を続行できなくなり、コンシューマは一定の間隔でリソースを消費します倉庫が空の場合 現時点では、消費者は消費を続けることができません。

  1. 消費者は毎回費やします

  1. 1 リソースの場合、まず消費前にリソースの数と倉庫の空き数を出力し、次に消費後にリソースの数と倉庫の空き数を出力し、消費されたリソースの内容を出力します。

  1. 生産者は毎回 1 つのリソースを生産し、まず生産前にリソースの数と倉庫の空き数を出力し、次に生産後にリソースの量と倉庫の空き数を出力し、その内容を出力します。生産されたリソース。

  1. 消費者はリソースを消費した後、消費したリソースをウェアハウスから削除する必要があります。

  1. セマフォを使用してプロセスの同期と相互排他を実装します。

[ヒント] この問題には多くの解決策があります。1 つ以上のセマフォを使用したり、セマフォ + ファイル ロックを使用したり、その他の適切な方法を使用したりすることもできます。

操作結果:

おすすめ

転載: blog.csdn.net/weixin_52357218/article/details/128619087