假设我有一系列我希望应用于某些数据的操作。实现这些操作的程序不一定用同一种语言编写,但它们都是通过从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机器或者我自己测试它。如果有人知道发生了什么,我感谢任何帮助。
答案 0 :(得分:2)
虽然Cygwin实现的类Unix层与本机POSIX系统或本机Windows编程相比存在许多缺陷(特别是在性能方面),但它实现的管道非常“真实”。管道中的程序将同时运行,并将并行处理它们收到的数据。
但是,与任何管道一样,整个操作的速度将由 slowmost 组件的速度决定。因此,如果管道中的某个程序的效率明显低于其他程序,则它将主导进程列表中的CPU使用率。