Bashにループがあるとしましょう:
for foo in `some-command`
do
do-something $foo
done
do-something
CPUにバインドされており、光沢のある4コアプロセッサがあります。4台まで同時に走れるようにしたいdo-something
です。
素朴なアプローチは次のようです。
for foo in `some-command`
do
do-something $foo &
done
これはすべて do-something
の s を一度に実行しますが、いくつかの欠点があります。主に、do-something には重要な I/O が含まれている可能性があり、一度にすべて実行すると少し遅くなる可能性があります。もう 1 つの問題は、このコード ブロックがすぐに返されるため、すべてdo-something
の が終了したときに他の作業を行う方法がないことです。
do-something
Xが同時に実行されるように、このループをどのように記述しますか?