gpt4 book ai didi

std::strings 队列通过 JNI 需要 C++ 共享内存吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:21 25 4
gpt4 key购买 nike

我试图了解从我编写到 Java 以供 UI 使用的 C++ 守护程序获取字符串的机制。我会张贴一张我设想的图片,然后继续提问:

enter image description here

我在这里设想了两个问题:

1) 信号量需要对库可用。在 Windows 中,这可以通过命名信号量和访问它的句柄来完成。在 Linux 中,有人指出我在共享内存中使用信号量,并通过共享内存的键让进程知道它。这对我来说很模糊,但这个概念是否适用于同步 Java 和守护进程?

2) 我是否必须将队列放在共享内存中才能使上图中的 ??? 链接正常工作?队列可以并且应该驻留在 .so 中吗?

所以这些是我的担忧。我喜欢并欢迎任何和所有的帮助、挑战和理智请求,并将尽我所能提供所有额外的必要信息。提前致谢。

最佳答案

您在单独的进程中运行这两个应用程序,在 vanilla Linux 中这意味着您不能直接通过内存在这些进程之间进行通信。 Java VM是一个进程,C++ daemon也是一个进程。它位于单独的内存位置,顺便说一句,内存管理器 (MMU) 对其进行了加扰。所以没有办法获得内存访问。

如果您愿意,可以在 Google 上搜索“内部流程通信”。我更喜欢使用 socketpair 运行双向父子通信。

关于std::strings 队列通过 JNI 需要 C++ 共享内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com