等到命令队列完成所有排队的作业

时间:2012-04-14 14:46:18

标签: cross-platform opencl

我有一个算法,可以在多个设备之间调度子任务来解决main_task。它将内核排入所有命令队列,并使用回调附加事件。 在这个回调中,我检查我的main_task是否已经完成,如果不是,我会再添加一个子任务。否则,我将共享变量is_main_task_done设置为true,以通知其他命令队列,他们应该停止将子任务排入队列。

同时,我必须以某种方式阻止主机的主线程退出,直到is_main_task_done设置为true。有跨平台解决方案吗?到目前为止,我在AMD的指南中找到了只有自旋锁解决方案:

while (!is_main_task_done)
 sleep(0)

但它似乎仅适用于Windows。

1 个答案:

答案 0 :(得分:1)

在这里使用信号量是一个好主意。使用您想要运行的任务数初始化信号量,并确保只运行此数字。