2

いくつかのデータに適用したい一連の操作があるとしましょう。操作を実装するプログラムは必ずしも同じ言語で書かれているわけではありませんが、それらはすべて STDIN から読み取り、STDOUT に書き込むことによって機能します。

UNIX 環境では、次のようなパイプラインとして設定できます。

cat data.txt | prog1.sh | prog2.pl | prog3.py | prog4 > out.txt

データのストリームで 4 つの操作を同時に実行します。

Windowsでも同じことが起こりますか?

数年前に Windows XP の cygwin でこれをテストしたことを覚えていますが、タスク マネージャーで実行されているプログラムは 1 つだけでした。

Cygwin、新しい XP サービス パック、または同時パイプラインを可能にする Windows 7/8 で何か変更はありますか? または、常に機能していて、テストで愚かな間違いを犯しただけですか?

現在、Windows マシンにアクセスできないか、自分でテストします。誰かが何が起こっているのか知っていれば、助けていただければ幸いです。

4

1 に答える 1

2

Cygwin によって実装された Unix ライクなレイヤーには、ネイティブ POSIX システムやネイティブ Windows プログラミング (特にパフォーマンスが関係する場合) と比較して多くの欠陥がありますが、それが実装するパイプは非常に「本物」です。パイプライン内のプログラムは同時に実行され、受信したデータを並行して処理します。

ただし、他のパイプラインと同様に、操作全体の速度は最も遅いコンポーネントの速度によって決まります。そのため、パイプライン内のプログラムの 1 つが他のプログラムよりも著しく効率が悪い場合、そのプログラムがプロセス リストの CPU 使用率を支配します。

于 2013-06-26T20:44:00.613 に答える