class Poco::Condition

Overview

A Condition is a synchronization object used to block a thread until a particular condition is met. Moreā€¦

#include <Condition.h>

class Condition
{
public:
    // methods

    template <class Mtx>
    void
    wait(Mtx& mutex);

    template <class Mtx>
    void
    wait(
        Mtx& mutex,
        long milliseconds
        );

    template <class Mtx>
    bool
    tryWait(
        Mtx& mutex,
        long milliseconds
        );

    void
    signal();

    void
    broadcast();

protected:
    // methods

    void
    enqueue(Event& event);

    void
    dequeue();

    void
    dequeue(Event& event);
};

Detailed Documentation

A Condition is a synchronization object used to block a thread until a particular condition is met.

A Condition object is always used in conjunction with a Mutex (or FastMutex) object.

Condition objects are similar to POSIX condition variables, which the difference that Condition is not subject to spurious wakeups.

Threads waiting on a Condition are resumed in FIFO order.

Construction

~Condition()

Destroys the Condition.

Methods

template <class Mtx>
void
wait(Mtx& mutex)

Unlocks the mutex (which must be locked upon calling wait()) and waits until the Condition is signalled.

The given mutex will be locked again upon leaving the function, even in case of an exception.

template <class Mtx>
void
wait(
    Mtx& mutex,
    long milliseconds
    )

Unlocks the mutex (which must be locked upon calling wait()) and waits for the given time until the Condition is signalled.

The given mutex will be locked again upon successfully leaving the function, even in case of an exception.

Throws a TimeoutException if the Condition is not signalled within the given time interval.

template <class Mtx>
bool
tryWait(
    Mtx& mutex,
    long milliseconds
    )

Unlocks the mutex (which must be locked upon calling tryWait()) and waits for the given time until the Condition is signalled.

The given mutex will be locked again upon leaving the function, even in case of an exception.

Returns true if the Condition has been signalled within the given time interval, otherwise false.

void
signal()

Signals the Condition and allows one waiting thread to continue execution.

void
broadcast()

Signals the Condition and allows all waiting threads to continue their execution.