![]() |
![]() |
![]() |
![]() |
Unlock the Photon library for use by other threads
int PtLeave( int flags );
ph
This function is the opposite to PtEnter(); it "unlocks" the library and lets other threads use Photon functions.
![]() |
Don't call PtLeave() if your thread hasn't locked the library by successfully calling PtEnter(). If you do, your application will crash if you're lucky, or just randomly corrupt some data if you're less lucky. |
PtLeave() doesn't atomically give the library lock to another thread blocked inside PtEnter(); the other thread gets unblocked, but then it must compete with any other threads as if it just called PtEnter().
The value of flags can be one of:
In most cases, it's better to set neither of these bits in flags, in which case the thread's status as event reader or nonreader doesn't change.
You can OR the following into the flags:
int flags; if ( ( flags = PtLeave( Pt_EVENT_PROCESS_PREVENT ) ) < 0 ) fprintf( stderr, "Couldn't leave: %s\n", strerror( -flags ) ); else { do_some_lengthy_stuff(); /* This will turn your thread back into a reader if it was a reader before: */ if ( ( flags = PtEnter( flags ) ) < 0 ) fprintf( stderr, "Couldn't enter: %s\n", strerror( -flags ) ); }
Photon
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
pthread_mutex_unlock() in the QNX 6 Library Reference
"Threads" in the Parallel Operations chapter of the Photon Programmer's Guide
![]() |
![]() |
![]() |
![]() |