标签: dyncall

注册的回调函数运行时,dcbFreeCallback是否安全?

我正在使用lwjgl 3提供的OpenCL Java绑定.

当我调用时clSetEventCallback,我必须传递一个回调函数 clSetEventCallback.对于每一个clSetEventCallback电话,我从LWJGL的创建了一个新的回调函数CLEventCallback.create,最终调用dyncalldcbNewCallback().

CLEventCallback myCallback = CLEventCallback.create(new CLEventCallbackI {
  ...
});
clSetEventCallback(..., myCallback, ...);
Run Code Online (Sandbox Code Playgroud)

由于我传递给的回调函数clSetEventCallback将只被评估一次,我想在OpenCL调用它时将其销毁.

@Override
public void invoke(long event, int status, long user_data) {
  myCallback.close();
}
Run Code Online (Sandbox Code Playgroud)

myCallback.close()由LWJGL提供,这将最终调用dyncalldcbFreeCallback().

上面的代码对我来说运行良好.

我想如果为所有CPU dyncall创建JMP类似指令,那么它是安全的.

但是,我没有找到任何dyncall允许dcbFreeCallback()在注册的回调函数运行时进行调用的文档.

那么,它在所有平台上都能保证安全吗?

java memory-management lwjgl opencl dyncall

6
推荐指数
0
解决办法
97
查看次数

标签 统计

dyncall ×1

java ×1

lwjgl ×1

memory-management ×1

opencl ×1