ns3::SystemCondition Class Reference

A class which provides a relatively platform-independent conditional-wait thread synchronization primitive. More...

#include <system-condition.h>

List of all members.

Public Member Functions

void SetCondition (bool condition)
bool GetCondition (void)
void Signal (void)
void Broadcast (void)
void Wait (void)
bool TimedWait (uint64_t ns)


Detailed Description

A class which provides a relatively platform-independent conditional-wait thread synchronization primitive.

It is often desirable to have a mechanism by which a thread can suspend its execution and relinquish the process until some condition to becomes true. We provide platform-independent access to this OS-dependent capability with the SystemCondition class.

There are two ways to tell the underlying primitive that the condition has become true: Signal and Broadcast. Signal will only wake up one thread waiting on the condition (according to the OS scheduling policy); Broadcast will wake up all of the threads waiting on the condition (cf. "The Thundering Herd").

In order to wait for the underlying condition, you also have two alternatives: Wait and TimedWait. The Wait call will wait forever for the condition to become true; but the TimedWait has a timeout.

The condition underlying this class is a simple boolean variable. It is set to false in each call to Wait and TimedWait. It is set to true in each call to Signal and Broadcast. This is a fairly simple-minded condition designed for

A typical use case will be to call Wait() or TimedWait() in one thread context and put the processor to sleep until an event happens somewhere else that


Member Function Documentation

void ns3::SystemCondition::Broadcast ( void   ) 

Release all threads waiting for the condition to be true. If you want all waiting threads to return, you should have done a SetCondition (true) prior to calling.

bool ns3::SystemCondition::GetCondition ( void   ) 

Get the value of the underlying condition.

void ns3::SystemCondition::SetCondition ( bool  condition  ) 

Set the value of the underlying condition.

void ns3::SystemCondition::Signal ( void   ) 

Release one thread if waiting for the condition to be true. If you want a waiting thread to return, you should have done a SetCondition (true) prior to calling.

bool ns3::SystemCondition::TimedWait ( uint64_t  ns  ) 

Wait a maximum of ns nanoseconds for the condition to be true. If the wait times out, return true else return false.

void ns3::SystemCondition::Wait ( void   ) 

Wait, possibly forever, for the condition to be true.


The documentation for this class was generated from the following file:

Generated on Fri Apr 9 15:01:09 2010 for NS-3 by  doxygen 1.5.8