2

假设我有一系列操作要应用于某些数据。实现这些操作的程序不一定用相同的语言编写,但它们都是通过从 STDIN 读取并写入 STDOUT 来工作的。

在 unix 环境中,可以将其设置为管道,例如:

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

它将在数据流上同时执行 4 个操作。

在windows中也会发生同样的情况吗?

我记得几年前在 windows xp 上使用 cygwin 进行了测试,但我只看到任务管理器中运行了一个 prog。

cygwin、新的 xp 服务包或允许并发流水线的 Windows 7/8 是否有任何变化?还是它一直有效,而我只是在测试中犯了一个愚蠢的错误?

我现在无法访问 Windows 机器,否则我会自己测试一下。如果有人知道发生了什么,我很感激任何帮助。

4

1 回答 1

2

虽然 Cygwin 实现的类 Unix 层与原生 POSIX 系统或原生 Windows 编程(尤其是在性能方面)相比存在许多缺陷,但它实现的管道非常“真实”。管道中的程序将同时运行,并将并行处理它们接收到的数据。

但是,与任何管道一样,整个操作的速度将取决于最慢组件的速度。因此,如果管道中的一个程序的效率明显低于其他程序,它将在进程列表中占据 CPU 使用率。

于 2013-06-26T20:44:00.613 回答