是否有必要释放clCreateUserEvent()创建的事件?

时间:2014-12-30 00:45:05

标签: opencl

我在文档中找不到发布方法。它隐藏在我看不见的地方吗?

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用clReleaseEvent减少事件的引用次数:

  

减少事件引用计数。一旦引用计数变为零,就会删除事件对象,此事件标识的特定命令已完成(或终止),并且上下文的命令队列中没有命令需要等待此事件完成。

但请注意:

  

开发人员在发布clCreateUserEvent创建的尚未设置为CL_COMPLETE状态或错误的事件的最新引用计数时应该小心。 [...]

根据OpenCL规范(§5.9事件对象),创建初始引用计数为1的用户事件:

  

返回事件的OpenCL命令执行隐式保留。

因此,如果您未对用户事件执行任何其他保留,则将其传递给clReleaseEvent应立即将其删除。您必须注意事件已标记为完成,否则您的应用程序可能会陷入僵局。