0

我根据linux 手册页使用任务集,以便仅在特定内核上运行处理非常密集的任务。

任务集被封装在一个循环中。每次选择一个新的目标目录并且任务正在运行时。并行运行该过程多次可能会导致致命的结果。

伪代码如下:

#!/bin/bash
while :
do
  target_dir=$(select_dir) # select new directory to process
  sudo taskset -c 4,5,6,7,8,9,10,11 ./processing_intense_task --dir $target_dir
done

如果任务集实际上等待进程完成,我在文档中没有发现任何内容。
如果它不等待,我如何在启动新实例之前等待任务完成processing_intense_task

4

1 回答 1

1

如果任务集实际上等待该过程完成,则文档。

Taskset 执行 exec,所以变成了命令。https://github.com/util-linux/util-linux/blob/master/schedutils/taskset.c#L246

这与其他类似命令相同,例如nice ionice.

如果不等,

好吧,从技术上讲,taskset 不会等待,它会成为命令本身。

如何在启动 processing_intense_task 的新实例之前等待任务完成?

您只需等待任务集进程完成,因为它与命令的进程相同。即什么也不做。

于 2021-11-11T09:58:27.117 回答