0

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

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

while (!is_main_task_done)
 sleep(0)

但它似乎仅适用于 Windows。

4

1 回答 1

1

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

于 2012-04-14T14:53:20.023 回答