RTP Trace System
1.0
|
#include <synchronizable.h>
Public Member Functions | |
Synchronizable () | |
~Synchronizable () | |
void | synchronized () |
bool | synchronizedTry () |
void | unsynchronized () |
void | resynchronize () |
void | synchronized_debug (const char *file, const cardinal line) |
void | unsynchronized_debug (const char *file, const cardinal line) |
bool | synchronizedTry_debug (const char *file, const cardinal line) |
void | resynchronize_debug (const char *file, const cardinal line) |
Private Attributes | |
pthread_mutex_t | Mutex |
This class realizes synchronized access to a thread's data by other threads. Synchronization is done by using a global pthread mutex and obtaining access to this mutex by synchronized() for synchronized access and releasing this mutex for unsynchronized access. IMPORTANT: Do *not* use synchronized()/unsynchronized() within async signal handlers. This may cause deadlocks. See PThread's pthread_mutex_lock man-page, section "Async Signal Safety" for more information!
Constructor
Destructor
void Coral::Synchronizable::resynchronize | ( | ) |
Do reinitialization of Synchronizable.
void Coral::Synchronizable::resynchronize_debug | ( | const char * | file, |
const cardinal | line | ||
) |
Debug version of resynchronize. This will print PID, file name and line number, followed by debug information.
file | File name. |
line | Line number. |
void Coral::Synchronizable::synchronized | ( | ) | [inline] |
synchronized() begins a synchronized block. The block has to be finished by unsynchronized(). synchronized() will wait until the mutex is available.
void Coral::Synchronizable::synchronized_debug | ( | const char * | file, |
const cardinal | line | ||
) |
Debug version of synchronized. This will print PID, file name and line number, followed by debug information.
file | File name. |
line | Line number. |
bool Coral::Synchronizable::synchronizedTry | ( | ) | [inline] |
synchronizedTry() tries to begins a synchronized block. It does the same as synchronized(), but returns immediately, if the mutex is obtained by another thread.
bool Coral::Synchronizable::synchronizedTry_debug | ( | const char * | file, |
const cardinal | line | ||
) |
Debug version of synchronizedTry. This will print PID, file name and line number, followed by debug information.
file | File name. |
line | Line number. |
void Coral::Synchronizable::unsynchronized | ( | ) | [inline] |
unsynchronized() ends a synchronized block, which has begun by synchronized().
void Coral::Synchronizable::unsynchronized_debug | ( | const char * | file, |
const cardinal | line | ||
) |
Debug version of unsynchronized. This will print PID, file name and line number, followed by debug information.
file | File name. |
line | Line number. |
pthread_mutex_t Coral::Synchronizable::Mutex [private] |