A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ns3::SystemCondition Class Reference

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

#include <system-condition.h>

Public Member Functions

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

Private Attributes

SystemConditionPrivatem_priv
 

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

Definition at line 56 of file system-condition.h.

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.

Definition at line 202 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.

bool ns3::SystemCondition::GetCondition ( void  )

Get the value of the underlying condition.

Definition at line 188 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.

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

Set the value of the underlying condition.

Parameters
conditionvalue

Definition at line 181 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.

Referenced by ns3::WallClockSynchronizer::DoSetCondition(), and ns3::WallClockSynchronizer::DoSignal().

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.

Definition at line 195 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.

Referenced by ns3::WallClockSynchronizer::DoSignal().

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.

Parameters
nsmaximum of nanoseconds to wait

Definition at line 216 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.

void ns3::SystemCondition::Wait ( void  )

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

Definition at line 209 of file unix-system-condition.cc.

References NS_LOG_FUNCTION.


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