21#ifndef INCLUDE_OLA_THREAD_FUTUREPRIVATE_H_
22#define INCLUDE_OLA_THREAD_FUTUREPRIVATE_H_
26#include <ola/thread/Mutex.h>
48 unsigned int ref_count = 0;
51 ref_count = --m_ref_count;
58 bool IsComplete()
const {
63 const T& Get()
const {
68 m_condition.Wait(&m_mutex);
72 void Set(
const T &t) {
76 OLA_FATAL <<
"Double call to FutureImpl::Set()";
82 m_condition.Broadcast();
86 mutable Mutex m_mutex;
88 unsigned int m_ref_count;
92 FutureImpl(
const FutureImpl &) =
delete;
93 const FutureImpl &operator=(
const FutureImpl &) =
delete;
100class FutureImpl<void> {
115 unsigned int ref_count = 0;
118 ref_count = --m_ref_count;
120 if (ref_count == 0) {
125 bool IsComplete()
const {
135 m_condition.Wait(&m_mutex);
142 OLA_FATAL <<
"Double call to FutureImpl::Set()";
147 m_condition.Broadcast();
151 mutable Mutex m_mutex;
153 unsigned int m_ref_count;
156 FutureImpl(
const FutureImpl &) =
delete;
157 const FutureImpl &operator=(
const FutureImpl &) =
delete;
Header file for OLA Logging.
#define OLA_FATAL
Definition Logging.h:65
Threads and synchronization mechanisms.
Definition ConsumerThread.cpp:25
The namespace containing all OLA symbols.
Definition Credentials.cpp:44