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
iniciado para usá-lo como um serviço de exclusão mútua gratuito? Por exemplo, considere a seguinte computação paralela:
$ 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 só existe no máximo um processo usando o 0
mesmo recurso para 1
. Basicamente, eu gostaria de comunicar esse índice ao processo filho que respeitaria a regra para usar apenas o recurso ao qual foi solicitado.
Obviamente, seria preferível estender isso para mais de dois recursos. Inspecionando os documentos, xargs
provavelmente não é possível fazer isso. Existe uma solução equivalente mínima? Usar / limpar arquivos como bloqueios falsos não é preferível.
fonte