Angenommen, ich habe zwei Ressourcen namens 0
und 1
, auf die nur exklusiv zugegriffen werden kann.
Gibt es eine Möglichkeit, den "Index" des "Parallelprozessors" wiederherzustellen, der xargs
gestartet 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 index
wie 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 0
und 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, xargs
können Sie dies wahrscheinlich nicht tun. Gibt es eine äquivalente Mindestlösung? Das Verwenden / Reinigen von Dateien als gefälschte Sperren ist nicht empfehlenswert.
quelle