说明:
我在 Linux/Mac 上。
我的部分代码使用 Java,部分代码使用 C++。
他们都映射了相同的文件以实现快速通信。
我想同步 Java 和 C++ 代码。
我知道以下内容:
1) 在 Java 中给定两个线程,我可以使用锁/监视器。
2) 给定一段 Java 代码和一段 C++ 代码,我可以让它们通过 tcp/ip 同步
3) 给定两段已映射内存区域的 C++ 代码,我可以使用 gcc 的 compare_and_swap 对映射区域中的整数进行同步。
问题:
鉴于我的部分代码是用 Java 编写的,我的部分代码是用 C++ 编写的,我能以某种方式做 (3) -- JVM 是否支持某种类型的原子比较和交换?那么我的 Java 和 C++ 代码都可以使用这个整数作为某种锁吗?
谢谢!
最佳答案
您可以编写一个小型 C/C++ 库,其唯一目的是与您的 C++ 代码同步(使用传统的 IPC 同步对象)。然后,您可以使用 JNI 从您的 Java 进程中获取此库。
关于Java、C++、NIO、mmaped 缓冲区、同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036503/