考虑以下场景。我有两个程序 A 和 B。程序 A 输出到 stdout 字符串行,而程序 B 处理来自 stdin 的行。这两个程序的使用方式当然是:
foo@bar:~$ A | 乙
现在我注意到这只会吃掉一个核心;因此我想知道:
程序 A 和 B 是否共享相同的计算资源?如果是这样,有没有办法同时运行 A 和 B?
我注意到的另一件事是 A 运行得比 B 快得多,因此我想知道是否可以以某种方式运行更多 B 程序并让它们并行处理 A 输出的行。
也就是说,A 将输出它的行,并且将有 N 个程序 B 的实例将读取这些行(谁先读取它们)处理它们并将它们输出到 stdout。
所以我的最后一个问题是:
有没有办法将输出通过管道传送到多个 B 进程之间的 A 而不必处理竞争条件和其他可能出现的不一致?