POSIX semaphores in JNI?

Discussion in 'Java' started by Kevin McMurtrie, Jul 24, 2004.

  1. 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
     
    Kevin McMurtrie, Jul 24, 2004
    #1
    1. Advertising

  2. Kevin McMurtrie

    Stefan Poehn Guest

    "Kevin McMurtrie" <> schrieb im Newsbeitrag
    news:...
    > 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
     
    Stefan Poehn, Jul 26, 2004
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Fuma
    Replies:
    0
    Views:
    2,832
  2. Replies:
    12
    Views:
    1,021
  3. Moiz
    Replies:
    0
    Views:
    477
  4. Nish
    Replies:
    1
    Views:
    424
    Victor Bazarov
    Sep 30, 2004
  5. FiLH

    Posix semaphores

    FiLH, Oct 1, 2005, in forum: C Programming
    Replies:
    11
    Views:
    597
    Mark McIntyre
    Oct 1, 2005
Loading...

Share This Page