event_wait_list
注意:在命令的参数中 指定用户事件的入队clEnqueue***
命令必须确保 在调用clSetUserEventStatus
任何释放除事件对象之外的 OpenCL 对象的 OpenCL API 之前使用设置这些正在等待的用户事件的状态;否则行为未定义。
因此,如果我在队列中等待用户事件,我不能在任何 OpenCL 对象上调用 release 吗?
这似乎是一个奇怪的要求?它的目的是什么?或者,为什么会这样?
他们给出的例子是:
ev1 = clCreateUserEvent(ctx, NULL);
clEnqueueWriteBuffer(cq, buf1, CL_FALSE, ..., 1, &ev1, NULL);
clEnqueueWriteBuffer(cq, buf2, CL_FALSE,...);
clReleaseMemObject(buf2); // <--- UNDEFINED
clSetUserEventStatus(ev1, CL_COMPLETE);
哪个导致未定义的行为?