假设我有两个资源,分别名为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
可能无法执行此操作。有最小的等效解决方案吗?使用/清除文件作为伪锁不是可取的。