Supponiamo di avere due risorse, denominate 0
e 1
, alle quali è possibile accedere esclusivamente.
Esiste un modo per recuperare l '"indice" del "processore parallelo" che viene xargs
avviato per utilizzarlo come servizio gratuito di mutua esclusione? Ad esempio, si consideri il seguente calcolo parallelizzato:
$ 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
La mia domanda è se esiste una parola magica, diciamo index
, dove dovrebbe apparire l'output
$ 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
dove l'unica garanzia è che esiste sempre e solo un processo che utilizza risorse 0
e lo stesso per 1
. Fondamentalmente, vorrei comunicare questo indice fino al processo figlio che rispetterebbe la regola per usare solo la risorsa a cui è stato detto.
Certo, sarebbe preferibile estenderlo a più di due risorse. Ispezionando i documenti, xargs
probabilmente non puoi farlo. Esiste una soluzione minima equivalente? Non è preferibile utilizzare / pulire i file come blocchi falsi.