【发布时间】:2017-11-28 09:55:08
【问题描述】:
我想使用从 java 到 c# 的内存映射文件来创建消费者-生产者模式。 我需要一种从 java 到 c# 的低延迟信号方式来读取数据。
在 c# 中,您可以在进程之间使用命名的 Mutex (new Mutex(true,"sharedMutex1")) 并使用 Mutex.WaitOne() 和 Mutex.ReleaseMutex() 来控制进程之间。
如何从 Java 进程执行此操作?
编辑:我知道您可以使用文件锁来执行此操作,但我想远离文件系统以保持低延迟。
edit:另一种选择是通过 JNI 使用 c++。所以我想我现在问是否可以直接在Java中完成?
【问题讨论】:
-
你有没有向强大的谷歌寻求答案?你自己尝试过什么吗?
-
我在 java 中看不到任何可以做到这一点的东西。
-
google 上的第一条结果:stackoverflow.com/questions/41866893/…
-
谢谢,所以您需要通过 JNI 使用 c++。有没有不诉诸于此的java解决方案?
-
如果您真的需要低延迟解决方案,请对共享内存区域中的值使用忙等待。确保该值在其自己的缓存行中单独存在以避免错误共享,并且它已正确对齐。使用联锁比较交换来翻转它 (
Interlocked.CompareExchange(ref *ptr, 1, 0))。您将拥有自己的互斥锁实现,而无需涉及内核。
标签: java c# multithreading ipc