My Project
Public Member Functions | Private Attributes
LibThread::SyncVar< T > Class Template Reference

#include <syncvar.h>

Public Member Functions

 SyncVar ()
 
void write (T &value)
 
void read (T &result)
 
bool try_read (T &result)
 

Private Attributes

Lock lock
 
ConditionVariable cond
 
int waiting
 
bool init
 
T value
 

Detailed Description

template<typename T>
class LibThread::SyncVar< T >

Definition at line 11 of file syncvar.h.

Constructor & Destructor Documentation

◆ SyncVar()

template<typename T >
LibThread::SyncVar< T >::SyncVar ( )
inline

Definition at line 19 of file syncvar.h.

19 : lock(), cond(&lock), waiting(0), init(false) {
20 }
ConditionVariable cond
Definition: syncvar.h:14

Member Function Documentation

◆ read()

template<typename T >
void LibThread::SyncVar< T >::read ( T result)
inline

Definition at line 31 of file syncvar.h.

31 {
32 lock.lock();
33 waiting++;
34 while (!init)
35 cond.wait();
36 waiting--;
37 if (waiting)
38 cond.signal();
39 lock.unlock();
40 }
void wait()
Definition: thread.h:88
void signal()
Definition: thread.h:97
void lock()
Definition: thread.h:46
void unlock()
Definition: thread.h:57

◆ try_read()

template<typename T >
bool LibThread::SyncVar< T >::try_read ( T result)
inline

Definition at line 41 of file syncvar.h.

41 {
42 bool success;
43 lock.lock();
44 success = init;
45 if (success) {
46 result = value;
47 }
48 lock.unlock();
49 return success;
50 }
return result
Definition: facAbsBiFact.cc:75

◆ write()

template<typename T >
void LibThread::SyncVar< T >::write ( T value)
inline

Definition at line 21 of file syncvar.h.

21 {
22 lock.lock();
23 if (!init) {
24 this->value = value;
25 this->init = true;
26 }
27 if (waiting)
28 cond.signal();
29 lock.unlock();
30 }

Field Documentation

◆ cond

template<typename T >
ConditionVariable LibThread::SyncVar< T >::cond
private

Definition at line 14 of file syncvar.h.

◆ init

template<typename T >
bool LibThread::SyncVar< T >::init
private

Definition at line 16 of file syncvar.h.

◆ lock

template<typename T >
Lock LibThread::SyncVar< T >::lock
private

Definition at line 13 of file syncvar.h.

◆ value

template<typename T >
T LibThread::SyncVar< T >::value
private

Definition at line 17 of file syncvar.h.

◆ waiting

template<typename T >
int LibThread::SyncVar< T >::waiting
private

Definition at line 15 of file syncvar.h.


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