从java访问全局C变量
我正在从java线程调用驻留在dll中的C函数。此C函数无限期运行并实时处理视频帧,输出每帧的结果 我希望生成另一个java线程,以便在不中断函数的情况下读取处理函数的结果。我还需要实现某种线程控制,以防止读取损坏的数据从java访问全局C变量,java,c,multithreading,native,Java,C,Multithreading,Native,我正在从java线程调用驻留在dll中的C函数。此C函数无限期运行并实时处理视频帧,输出每帧的结果 我希望生成另一个java线程,以便在不中断函数的情况下读取处理函数的结果。我还需要实现某种线程控制,以防止读取损坏的数据 有什么想法吗?您可以将C函数嵌入java线程启动的可执行文件中。C函数可以将结果发布到管道中,或者通过套接字将结果发送到java线程。这使您可以灵活地在一台机器上运行C函数,在另一台机器上运行java线程。全局由您的C环境控制 我怀疑你应该这样做: 创建一个返回全局变量值的函数
有什么想法吗?您可以将C函数嵌入java线程启动的可执行文件中。C函数可以将结果发布到管道中,或者通过套接字将结果发送到java线程。这使您可以灵活地在一台机器上运行C函数,在另一台机器上运行java线程。全局由您的C环境控制 我怀疑你应该这样做:
您目前如何调用C函数?我还没有实现它,我已经准备好C函数,并打算在windows上使用JNIAre调用它?因为从DLL的角度来看,“全局”变量实际上很少是全局的。有时它们对每个人都是全局的,但通常它们仅限于每个进程甚至每个线程。我在windows上,我已经准备好了C程序。希望将其转换为DLL,然后从java调用,并使用另一个java线程访问结果。你有什么想法吗?是的,我理解你的目标,但我想说的是,这取决于你打算如何称呼它。如果Java加载DLL,启动处理器,然后重复检查它,我只需要创建另一个名为“check_my_global”的C函数,它返回值。另一方面,如果您正在启动一个新的java进程,那么事情就会变得复杂。