Suponha que eu tenha dois recursos, nomeados 0
e 1
, que só podem ser acessados exclusivamente.
Existe alguma maneira de recuperar o "índice" do "processador paralelo" que xargs
inicia para usá-lo como um serviço gratuito de exclusão mútua? 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
Minha pergunta é se existe uma palavra mágica, digamos index
, onde a saída se pareceria
$ 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
onde a única garantia é que há apenas no máximo um processo usando recurso 0
e o mesmo para 1
. Basicamente, gostaria de comunicar esse índice ao processo filho que respeitaria a regra de usar apenas o recurso para o qual foi solicitado.
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.