Angenommen, ich habe zwei Ressourcen namens 0und 1, auf die nur exklusiv zugegriffen werden kann.
Gibt es eine Möglichkeit, den "Index" des "Parallelprozessors" wiederherzustellen, der xargsgestartet wird, um ihn als kostenlosen Dienst zum gegenseitigen Ausschluss zu verwenden? Betrachten Sie beispielsweise die folgende parallelisierte Berechnung:
$ 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
Meine Frage ist, ob es ein Zauberwort gibt, etwa indexwie die Ausgabe aussehen würde
$ 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
wo die einzige Garantie ist, dass es immer nur höchstens einen Prozess gibt, der Ressourcen verbraucht 0und für den das gleiche gilt 1. Grundsätzlich möchte ich diesen Index an den untergeordneten Prozess weitergeben, der die Regel einhält, nur die Ressource zu verwenden, der er zugewiesen wurde.
Es wäre natürlich vorzuziehen, dies auf mehr als zwei Ressourcen auszudehnen. Wenn Sie die Dokumente überprüfen, xargskönnen Sie dies wahrscheinlich nicht tun. Gibt es eine äquivalente Mindestlösung? Das Verwenden / Reinigen von Dateien als gefälschte Sperren ist nicht empfehlenswert.