Java、C++、NIO、mmaped 缓冲区、同步

标签 java c++ locking nio mmap

说明:

我在 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/

相关文章:

c++ - C++ mutex 和 RTOS xMutex 的区别

concurrency - 应用程序对象和并发问题

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'org.springframework.security.filterChains' :

java - 用于将 JSON 插入 JavaDoc 的工具?

c++ - 通过 C++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程

以 C++ 与 D 为例。 D主页的前端程序RPN计算器对比

java - 复制对象的引用或在方法/构造函数中传递它是线程安全的吗?

java - Java中如何设置图标显示在最右边

java - 错误 : Split metadata size exceeded 10000000

c++ - 访问硬盘的未分配空间