Opencl 为什么可以';我是否多次使用clSetUserEventStatus()?

Opencl 为什么可以';我是否多次使用clSetUserEventStatus()?,opencl,Opencl,如果我没有误解的话,它说当希望重用用户事件时,这无法完成,必须创建一个新事件(clreleasevent()+clCreateUserEvent()) 详情如下: clSetUserEventStatus()只能调用一次以更改执行 事件状态 现在,出于好奇:为什么?这是一个设计决策,还是由于某些特定的原因,我没有得到它?我想,这个限制是为了防止OpenCL用户事件是CL\u COMPLETE,然后CL\u运行,然后再次CL\u COMPLETE等。这可能会导致一些不可预见的后果,并导致bug(注

如果我没有误解的话,它说当希望重用用户事件时,这无法完成,必须创建一个新事件(
clreleasevent()
+
clCreateUserEvent()

详情如下:

clSetUserEventStatus()
只能调用一次以更改执行 事件状态


现在,出于好奇:为什么?这是一个设计决策,还是由于某些特定的原因,我没有得到它?

我想,这个限制是为了防止OpenCL用户事件是
CL\u COMPLETE
,然后
CL\u运行
,然后再次
CL\u COMPLETE
等。这可能会导致一些不可预见的后果,并导致bug(注册回调的问题?)

我明白你的意思,但如果这是原因,为什么非用户事件不一样?我的意思是,我们可以多次重用非用户事件而不会出现问题……您可以重用非用户事件的句柄(
cl\u event
),但不会重用底层事件。每次OpenCLAPI调用后,句柄指向不同的事件。但是,对于用户创建的事件,您可以使用
clCreateUserEvent
自行创建基础事件,这就是为什么可以重用该事件的原因。在使用
clReleaseEvent
释放基础事件后,您仍然可以稍后重用用于用户事件的
cl\u事件
句柄。