Supposons que j'ai deux ressources, nommées 0
et 1
, qui ne sont accessibles qu'en exclusivité.
Existe-t-il un moyen de récupérer l '"index" du "processeur parallèle" qui se xargs
lance afin de l'utiliser comme un service d'exclusion mutuelle gratuit? Par exemple, considérons le calcul parallélisé suivant:
$ 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
Ma question est de savoir s'il existe un mot magique, disons index
, où la sortie ressemblerait
$ 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
où la seule garantie est qu'il n'y a qu'un seul processus au plus utilisant la 0
même ressource et pour 1
. Fondamentalement, j'aimerais communiquer cet index au processus enfant qui respecterait la règle pour utiliser uniquement la ressource à laquelle il a été dit.
Bien sûr, il serait préférable d'étendre cela à plus de deux ressources. Inspecter les documents, xargs
ne peut probablement pas le faire. Existe-t-il une solution équivalente minimale? L'utilisation / le nettoyage de fichiers comme de faux verrous n'est pas préférable.