假设我有一个内核,必须等待5个事件在运行之前完成。内核启动后如何安全地释放这5个事件?
一种方法是在内核完成时触发回调,并在那时释放事件,但这看起来很尴尬。
答案 0 :(得分:4)
只要您将等待它们的内核排入队列,就可以安全地释放事件。 OpenCL规范对clReleaseEvent
的描述包括以下段落:
一旦引用计数变为零,就会删除事件对象,此事件标识的特定命令已完成(或终止),并且上下文的命令队列中没有命令需要等待此事件活动。
clReleaseEvent
函数只是递减引用计数,但如果从正在执行或正在执行的命令中有其它引用,则实际上不会销毁该事件。