Suponha que eu tenha dois recursos, denominados 0
e 1
, que só podem ser acessados exclusivamente.
Existe alguma maneira de recuperar o "índice" do "processador paralelo" que xargs
lança para usá-lo como um serviço de exclusão mútua livre? Por exemplo, considere a seguinte computação paralelizada:
$ 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
A minha pergunta é se existe uma palavra mágica, digamos index
, onde a saída seria semelhante a
$ 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
em que a única garantia é que, no máximo, só haverá um processo usando o recurso 0
e o mesmo para 1
. Basicamente, gostaria de comunicar esse índice ao processo filho que respeitaria a regra para usar somente o recurso para o qual foi contado.
Claro, seria preferível estender isso para mais de dois recursos. Inspecionando os documentos, xargs
provavelmente não pode fazer isso. Existe uma solução equivalente mínima? Usar / limpar arquivos como bloqueios falsos não é preferível.