有没有办法从C传递回调到java代码。并且调用立即返回。稍后,在完成任务后,java代码可以调用该回调。
我有一个用于php的C扩展,它调用一个java商店来存储一些项目。可以通过同步和异步方法从商店中检索项目(我向商店提供密钥列表和回调,并调用回调并返回其中的项目。)
我可以从扩展程序同步检索项目,但现在我不知道如何异步执行。
作为最后的手段,我可能必须在C代码中创建一个线程,并在该线程中排队可以从java检索的键。
或者zend中是否有任何支持允许我排队任务和zend可以逐个为队列中的每个任务调用的回调?
答案 0 :(得分:4)
java调用C函数的方法是 native 类方法。只需在java(可能实现你的回调接口)中创建一个具有本机方法的类。编译它并使用JDK中的javah工具进行处理 - 这将创建带有函数签名的头。然后,您可以在本机代码中实现此功能。
当你需要提供回调时 - 通过NewObject()创建这个类的新实例并传递给java代码。