我有一个算法,可以在多个设备之间调度子任务来解决main_task。它将内核排入所有命令队列,并使用回调附加事件。
在这个回调中,我检查我的main_task是否已经完成,如果不是,我会再添加一个子任务。否则,我将共享变量is_main_task_done
设置为true
,以通知其他命令队列,他们应该停止将子任务排入队列。
同时,我必须以某种方式阻止主机的主线程退出,直到is_main_task_done
设置为true
。有跨平台解决方案吗?到目前为止,我在AMD的指南中找到了只有自旋锁解决方案:
while (!is_main_task_done)
sleep(0)
但它似乎仅适用于Windows。
答案 0 :(得分:1)
在这里使用信号量是一个好主意。使用您想要运行的任务数初始化信号量,并确保只运行此数字。