私は2つのリソース、という名前があると0
し、1
唯一の排他的にアクセスすることができ、。
xargs
無料の相互排除サービスとして使用するために起動する「並列プロセッサ」の「インデックス」を回復する方法はありますか?たとえば、次の並列化された計算を検討してください。
$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {}"
consuming task 1
consuming task 2
consuming task 3
consuming task 4
consuming task 5
consuming task 6
consuming task 7
consuming task 8
私の質問はindex
、出力が次のようになるような魔法の単語があるかどうかです
$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {} with resource index"
consuming task 1 with resource 0
consuming task 2 with resource 1
consuming task 3 with resource 1
consuming task 4 with resource 1
consuming task 5 with resource 0
consuming task 6 with resource 1
consuming task 7 with resource 0
consuming task 8 with resource 0
ここで、唯一の保証は、リソース0
を使用するプロセスが最大で1つだけであり、同じことです1
。基本的に、このインデックスを、通知されたリソースのみを使用するルールを尊重する子プロセスに伝えたいと思います。
もちろん、これを3つ以上のリソースに拡張することをお勧めします。ドキュメントを調べると、xargs
おそらくこれができません。最小限の同等のソリューションはありますか?偽のロックとしてファイルを使用/クリーニングすることは好ましくありません。