Java, C++, NIO, mmaped buffer, synchronization
Exposition:
I am on Linux / Mac.
Part of my code is in Java, part of my code is in C++.
They both have the same file mmapped for fast communication.
I want t开发者_开发技巧o synchronize the Java & C++ code.
I know the following:
1) given two threads in Java, I can use Locks / monitors.
2) given one piece of code in Java, one in C++, I can have them synchronize over tcp/ip
3) given two pieces of C++ code, that have mmaped an area of memory, I can have them synchronize using gcc's compare_and_swap on a integer in the mmaped region.
Question:
Given that part of my code is in Java, part of my code is in C++, can I somehow do (3) -- does the JVM support some type of atomic compare & swap ? So both my Java & C++ code can use this integer as a lock of sorts?
Thanks!
You could write a small C/C++ library that only purpose is to sync with your C++ code (using conventional IPC sync objects). Then you could would this library from your java process using JNI.
精彩评论