シェルコマンドの並行性

[rakuten:hmvjapan:11795804:detail]

P34. Memo
パイプライン中の各コマンドは、OS上で並行処理で同時に実行され、また、パイプを通る標準入出力のデータは、テンポラリファイルを使用せずに受け渡されるため、パイプラインは非常に効率のよい実行方法です。

な、なんと。パイプライン中の各コマンドは並行処理されるのか。
すげーと思いつつ活用シーンがすぐに思いつかない。
grep A | grep B みたいに、grepした結果をさらにgrepで絞り込む処理とかだと先のgrepが処理完了するまで後のgrepが待たされる気がする。



15分後くらいに追記:
grepだとダメだね。grep対象のリソースファイルが前後のgrepで共有してるからね。競合してしまうものね。
共有リソースをつかわない処理だったらいいかんじに並列処理してくれるのかな。


30分後くらいに追記:
いやgrepでも並行処理を有効活用してる気がしてきた。
先のgrepでは対象のファイルをまずメモリに展開してそのgrep結果をメモリに展開し、その結果を後のgrepが処理しているんだから参照してるメモリ空間は別物だと思われ、
先のgrep結果が出たらそれをいそいそと逐次処理している後のgrepが思い浮かんだ。