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
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