"Kevin McMurtrie" <> schrieb im Newsbeitrag
news:mcmurtri-...
> 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.
> 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
|