事件对象可以用来标记命令的执行状态,状态有以下几种:
CL QUEUED -﹣表示任务已经进入命令队列。除 user event 外,其它所有事件的初始状态都为 CL QUEUED 。
CL SUBMITTED -- user event 的初始状态。对于其他类型的 event ,该状态表示任务命令已经由主机提交给设备。
CL RUNNING -﹣表示设备已经开始执行命令。
CL COMPLETE -﹣表示命令执行完成。
Eror code -﹣错误代码为负整数值,表示命令执行终止。非正常的命令终止,可能会引起内存方面的错误。需要注意的是:如果命令被终止,那么跟这个被终止的命令相关的任务队列也会终止, context 不可用
包括该 context 内所有其它的命令队列:使用该 context 的 APIs 会出现未定义的行为。
,另外,跟该 context 相关的回调函数也会发生错误。
那么, user event 状态在设置为 CL COMPLETE 之前,任务命令的状态可以为 CL sUBMIT ,因为这是 user event 的初始状态。
cl int clSetUserEventStatus ( cl _ event event , cl _ int execution _status)
用来设置user event 的我行状态。
event -﹣必须是c1CreateUserEvent创建的.
excution status -﹣所要设置的执行状态,可以为 Ct _ COMPLETE ,或者用一个负整数来表示错误,设置为负数会引起依赖user event的所有enqueue command终止。
需要注意的是:user event状态只能设置一次。