それで私は次の学校の課題を見ていました、そして私は困惑しています。ある方向で専門家のところに来ると思いました。同期に関する私の知識はひどく不足しており、それが参照する「mcopyfile」の割り当てについてはそれほど熱心ではありませんでした。ひどいことはおそらくそれのための良い言葉でしょう。この問題をどのように達成するかについて何らかの方向性を得ることができれば、それは大いにありがたいです。私の任務を遂行する人を探しているのではなく、正しい方向に私を向けてくれる人が必要です。赤ちゃんのステップ。
ラボ2で作成したマルチスレッドファイルコピーツール(mcopyfile)に基づいて、負荷を処理するために固定数のスレッドを使用するワーカープール(生産者/消費者モデル)の実装を使用してください(ファイルの数に関係なく)コピーするディレクトリ)。プログラムは、1つのファイルコピープロデューサースレッドと複数のファイルコピーコンシューマースレッドを作成する必要があります(この数はコマンドライン引数から取得されます)。ファイルコピープロデューサースレッドは、制限されたサイズのバッファー構造で(ソースと宛先の)ファイル記述子のリストを生成します。プロデューサーがバッファーにアクセスするたびに、1つの(ソース、宛先)ファイルエントリを(訪問ごとに)書き込みます。そして、すべてのファイルコピーコンシューマスレッドはこのバッファから読み取り、実際のファイルコピータスクを実行します。対応するファイルエントリを削除します(各コンシューマーは毎回1つのエントリを消費します)。プロデューサースレッドとコンシューマースレッドの両方が、ファイル名と完了ステータスを示すメッセージを標準出力に書き込みます(たとえば、プロデューサーの場合:「file1をバッファーに入れています」、コンシューマーの場合:「file1のコピーを完了しています…」)。