POSIX semaphores in JNI?

K

Kevin McMurtrie

Can POSIX semaphores be used in Java 1.4.2 JNI code? I have a C++ image
rendering library that is I/O, memory, and CPU intensive. The
operations can be lengthy and various stages of rendering are cached.

The thread management is fairly complex and fined-grained to make sure
that operations do not interfere with each other, especially during I/O.
Is it OK to use POSIX recursive semaphores to control threading? The
JNI docs don't mention it. Information on the web conflicts or is
obsolete (mentions green threads problem).

MacOS X uses 1:1 pthreads. For Linux and Solaris, I'm not sure if the
POSIX routines are safe. JNI threading could replace POSIX threading
but I'm worried about its performance with large caches and numbers of
semaphores. Also, maintaining proper references to the Java sync
objects will be non-trivial. This library has an eventual memory
corruption problem on Solaris only. I don't know if I should spend two
days rewriting my semaphore C++ class for JNI threading or keep looking
for the usual C++ memory bugs. The crash takes 6 to 12 hours to appear
so debugging is time consuming.


Thanks
 
S

Stefan Poehn

Kevin McMurtrie said:
Can POSIX semaphores be used in Java 1.4.2 JNI code? I have a C++ image
rendering library that is I/O, memory, and CPU intensive. The
operations can be lengthy and various stages of rendering are cached.

I have used Win32 and vxWorks Semaphores in a JNI project (2 years ago) and
both worked fine. Are the vxWorks semaphores posix compliant?

If you call a method that blocks on a taken semaphore, it does not matter if
you call from C/C++ or Java, all methods will block.

The only pitfall I have encountered is: You cannot create a thread in C/C++
and send any calls to the java virtual machine before you call
AttachCurrentThread.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top