Windows中Java应用程序和C++应用程序之间的同步

Posted

技术标签:

【中文标题】Windows中Java应用程序和C++应用程序之间的同步【英文标题】:synchronization between a java app and C++ app in windows 【发布时间】:2013-11-19 13:38:35 【问题描述】:

我有两个应用程序,一个是用 java 编写的,另一个是用 C++ 编写的(都在 windows 平台上)。

这两个应用程序都试图访问单个资源,我想放置某种同步机制。 我该怎么做?

有没有办法在 Java 代码中访问 Windows 内核对象,如互斥锁、事件、信号量并等待它?

解决此类问题的标准方法是什么?

感谢和问候 苏尼尔

【问题讨论】:

我天真的解决方案是通过本地网络与套接字通信。但是你没有得到原子操作..我很想看到“正确”的解决方案 好吧,对于特定于 windows 的 c++ 世界,您可以查看msdn on inter process synchronisation。但是,我不确定这些选项是否可以从 Java 轻松获得。 【参考方案1】:

有几种同步方式:

通过 JNI(也称为本地方法)从 java 访问 IPC 同步原语 - Oracle's docs。 使用套接字发送/接收信号。 使用文件作为同步对象:Java 7 具有用于文件系统的全新 API - WatcherService can be used to see changes on FS。

【讨论】:

以上是关于Windows中Java应用程序和C++应用程序之间的同步的主要内容,如果未能解决你的问题,请参考以下文章

C++和VisualC++有啥区别?

写入在 Windows 下的 Java 应用程序中生成的 C++ 控制台应用程序

C++ 和 Java 应用程序之间的 NamedPipe 进程间

C/C++编程笔记:盘点Java和C++之间的相似之处!

Java程序猿学习C++之字符串

Windows 8 上的 Visual C++ 6.0