1

我想运行未知数量(在编译时未知)的 NSTask,我想同时运行未知数量(同样,在编译时,最多 8 个)它们。所以基本上我遍历一个文件列表,生成一个 NSTask,运行它,直到同时运行最大的任务,并且每当一个人完成另一个 NSTask,直到所有这些都完成。

我的方法是创建一个生成 NSTask 的类,并将其子类化以在有不同输入(从界面进行的更改)时在这里和那里更改参数。然后超类将运行 NSTask 并将有一个 @synthesize 方法返回其进度。这些对象将在上述重复循环中生成并显示进度。

这是一个好方法吗?如果是这样,有人可以给我一个简单的例子来说明重复循环的样子吗?我不知道一旦它们运行我将如何引用所有对象。

for (; !done ;) {
    if (maxValue ≥ currentValue) {
  //Run Object with next file.
  //Set currentValue.
 }
 //display progress and set done to YES if needed and set currentValue to it -1 if needed
}

提前致谢。

4

1 回答 1

2

完全没有循环。

为尚未开始的任务创建一个数组,另一个包含正在运行的任务,另一个包含已完成的任务。有一种方法可以从 pending-tasks 数组中提取一个任务,启动(启动)它,并将其添加到 running-tasks 数组中。创建数组并填写pending-tasks 数组后,调用该方法八次。

任务完成时,从 running-tasks 数组中删除该任务并将其添加到 finished-tasks 数组中,然后检查是否有任何任务尚未运行。如果至少有一个,请再次调用 run-another-one 方法。否则,检查是否有任何仍在运行:如果没有,则所有任务都已完成,您现在可以组装结果(如果您还没有实时显示它们)。

于 2010-02-26T17:40:43.613 回答