C でプログラミングしているオペレーティング システム クラスの宿題で、疑似コードを書くのに問題があります。
N 個の要素、P 個のプロデューサー スレッド、および C 個のコンシューマー スレッドの制限付きバッファー キューを使用してプロデューサー/コンシューマー プログラムを実装します (N、P、および C は、プログラムのコマンド ライン引数であり、3 つの追加パラメーター X、Ptime、およびCtime については後述します)。 各
プロデューサ スレッドは、X 個の異なる数値をキューにエンキューする必要があります (エンキューへの各呼び出しの間に Ptime*100,000 サイクルのスピン待機)。各コンシューマー スレッド
は、キューから P*X/C アイテムをデキューする必要があります (デキューへの各呼び出しの間に Ctime*100,000 サイクルのスピン待機)。 メイン プログラムは、バウンド バッファー キューを作成/初期化し、タイムスタンプを出力し、C コンシューマー スレッドと P
プロデューサー スレッドを生成し、すべてのスレッドが終了するのを待ってから、別のタイムスタンプと実行時間を出力する必要があります。
私の主な困難は、変数の 100,000 倍をスピン待機するという私の教授の意味を理解することです。私を混乱させるセクションを太字にしました。
各スレッドの違いを出力するためにタイムスタンプが使用されることを理解しています。現在、セマフォを使用して同期を実装しています。上記のクエリに関する提案は大歓迎です。