Предположим, у меня есть два ресурса с именами 0
и 1
, к которым можно получить доступ только исключительно.
Есть ли способ восстановить «индекс» «параллельного процессора», который xargs
запускается, чтобы использовать его в качестве бесплатного сервиса взаимного исключения? Например, рассмотрим следующие параллельные вычисления:
$ 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
Мой вопрос заключается в том, существует ли волшебное слово, скажем index
, где будет выглядеть результат
$ 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
где единственная гарантия состоит в том, что существует только один процесс, использующий ресурс, 0
и один и тот же для 1
. По сути, я хотел бы сообщить об этом индексе дочернему процессу, который будет соблюдать правило, чтобы использовать только тот ресурс, о котором ему было сказано.
Конечно, было бы предпочтительнее распространить это на более чем два ресурса. Изучая документы, xargs
вероятно, не могу этого сделать. Есть ли минимальное эквивалентное решение? Использование / очистка файлов в качестве поддельных блокировок не является предпочтительным.
источник