I am using the Java OpenCL binding provided by lwjgl 3.
When I call clSetEventCallback
, I need to pass a callback function clSetEventCallback
. For each call, clSetEventCallback
I created a new callback function from lwjgl CLEventCallback.create
, which eventually calls dyncall
dcbNewCallback()
.
CLEventCallback myCallback = CLEventCallback.create(new CLEventCallbackI {
...
});
clSetEventCallback(..., myCallback, ...);
Since the callback function passed to clSetEventCallback
will be evaluated once and only once, I want to destroy it when it is called by OpenCL.
@Override
public void invoke(long event, int status, long user_data) {
myCallback.close();
}
myCallback.close()
provided by lwjgl and eventually it will call dyncall
dcbFreeCallback()
.
The above code is suitable for me.
I think if it dyncall
creates JMP
-like instructions for all processors, then this is safe.
dyncall
, dcbFreeCallback()
, .
, ?