ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkSemaphore.h>
Public Types | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef Semaphore | Self |
typedef LightObject | Superclass |
Public Member Functions | |
virtual ::itk::LightObject::Pointer | CreateAnother (void) const |
void | Down () |
virtual const char * | GetNameOfClass () const |
void | Initialize (unsigned int value) |
void | Remove () |
void | Up () |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
Semaphore () | |
~Semaphore () | |
Private Attributes | |
SemaphoreType | m_Sema |
char | Pad1 [128] |
char | Pad2 [128] |
The semaphore class is used to synchronize execution between threads.
Semaphore objects maintain a counter value that can be incremented and decremented by atomic calls to Up() and Down(). Semaphores are commonly used to manage the use of a limited pool of system resources among several threads. If Down() is called when the value of the semaphore is zero, the calling thread will block until the semaphore value goes above zero again. When a blocked thread is released, it decrements the Semaphore counter before continuing to execute.
The Up() and Down() operations are standard as defined by E.W. Dijkstra. The Initialize( num ) operation creates the system semaphore object with an initial counter value of num. Initialize must be called before the Semaphore can be used. The Remove() method destroys the system semaphore object. It is not necessary to call Remove() unless you want to re-Initialize() the object.
This class supports 3 types of semaphores on Unix systems, POSIX semaphores, and IPC semaphores. On Windows systems, POSIX semaphores and WIN32 thread library semaphores are supported.
Definition at line 102 of file itkSemaphore.h.
typedef SmartPointer< const Self > itk::Semaphore::ConstPointer |
Reimplemented from itk::LightObject.
Definition at line 109 of file itkSemaphore.h.
typedef SmartPointer< Self > itk::Semaphore::Pointer |
Reimplemented from itk::LightObject.
Definition at line 108 of file itkSemaphore.h.
typedef Semaphore itk::Semaphore::Self |
Standard class typedefs.
Reimplemented from itk::LightObject.
Definition at line 106 of file itkSemaphore.h.
Definition at line 107 of file itkSemaphore.h.
itk::Semaphore::Semaphore | ( | ) | [protected] |
itk::Semaphore::~Semaphore | ( | ) | [protected] |
virtual::itk::LightObject::Pointer itk::Semaphore::CreateAnother | ( | void | ) | const [virtual] |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::LightObject.
void itk::Semaphore::Down | ( | ) |
Decrement the semaphore count. If the count is zero, this thread will be blocked until another thread calls the up() method. The order in which threads will be unblocked is not defined, but implementors should give preference to those threads that have waited the longest.
virtual const char* itk::Semaphore::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods).
Reimplemented from itk::LightObject.
void itk::Semaphore::Initialize | ( | unsigned int | value | ) |
Initialize the semaphore with a count of value.
static Pointer itk::Semaphore::New | ( | ) | [static] |
Method for creation through the object factory.
Reimplemented from itk::LightObject.
void itk::Semaphore::Remove | ( | ) |
Remove the semaphore from the system.
void itk::Semaphore::Up | ( | ) |
Increment the semaphore count, unblocking up to one thread that may be blocked in the down() method.
SemaphoreType itk::Semaphore::m_Sema [private] |
Definition at line 161 of file itkSemaphore.h.
char itk::Semaphore::Pad1[128] [private] |
Definition at line 159 of file itkSemaphore.h.
char itk::Semaphore::Pad2[128] [private] |
Definition at line 162 of file itkSemaphore.h.