Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java访问全局C变量_Java_C_Multithreading_Native - Fatal编程技术网

从java访问全局C变量

从java访问全局C变量,java,c,multithreading,native,Java,C,Multithreading,Native,我正在从java线程调用驻留在dll中的C函数。此C函数无限期运行并实时处理视频帧,输出每帧的结果 我希望生成另一个java线程,以便在不中断函数的情况下读取处理函数的结果。我还需要实现某种线程控制,以防止读取损坏的数据 有什么想法吗?您可以将C函数嵌入java线程启动的可执行文件中。C函数可以将结果发布到管道中,或者通过套接字将结果发送到java线程。这使您可以灵活地在一台机器上运行C函数,在另一台机器上运行java线程。全局由您的C环境控制 我怀疑你应该这样做: 创建一个返回全局变量值的函数

我正在从java线程调用驻留在dll中的C函数。此C函数无限期运行并实时处理视频帧,输出每帧的结果

我希望生成另一个java线程,以便在不中断函数的情况下读取处理函数的结果。我还需要实现某种线程控制,以防止读取损坏的数据


有什么想法吗?

您可以将C函数嵌入java线程启动的可执行文件中。C函数可以将结果发布到管道中,或者通过套接字将结果发送到java线程。这使您可以灵活地在一台机器上运行C函数,在另一台机器上运行java线程。

全局由您的C环境控制

我怀疑你应该这样做:

  • 创建一个返回全局变量值的函数,并使用JNI从java调用它
  • 用C语言实现同步

  • 您目前如何调用C函数?我还没有实现它,我已经准备好C函数,并打算在windows上使用JNIAre调用它?因为从DLL的角度来看,“全局”变量实际上很少是全局的。有时它们对每个人都是全局的,但通常它们仅限于每个进程甚至每个线程。我在windows上,我已经准备好了C程序。希望将其转换为DLL,然后从java调用,并使用另一个java线程访问结果。你有什么想法吗?是的,我理解你的目标,但我想说的是,这取决于你打算如何称呼它。如果Java加载DLL,启动处理器,然后重复检查它,我只需要创建另一个名为“check_my_global”的C函数,它返回值。另一方面,如果您正在启动一个新的java进程,那么事情就会变得复杂。