Lock¶
class RWLock¶
- 
class paddle::RWLock¶
- A simple read-write lock. The RWlock allows a number of readers or at most one writer at any point in time. The RWlock disable copy. - Lock: - Use lock() to lock on write mode, no other thread can get it until unlock. - Use lock_shared() to lock on read mode, other thread can get it by using the same method lock_shared(). - Unlock: - Use unlock() to unlock the lock. - Public Functions - 
RWLock()¶
 - 
~RWLock()¶
 - 
void lock()¶
- lock on write mode. - Note
- the method will block the thread, if failed to get the lock.
 
 - lock on read mode. - Note
- if another thread is writing, it can’t get the lock, and will block the thread.
 
 - 
void unlock()¶
 - Protected Attributes - 
pthread_rwlock_t rwlock_¶
 
- 
class ReadLockGuard¶
- 
class paddle::ReadLockGuard¶
- The ReadLockGuard is a read mode RWLock using RAII management mechanism. - Public Functions - 
~ReadLockGuard()¶
- Destruct Function. - Note
- This method just unlock the read mode rwlock, won’t destroy the lock.
 
 
- 
class SpinLock¶
class Semaphore¶
- 
class paddle::Semaphore¶
- A simple wapper of semaphore which can only be shared in the same process. - Public Functions - 
Semaphore(int initValue = 0)¶
- Construct Function. - Parameters
- initValue-- the initial value of the semaphore, default 0. 
 
 
 - 
~Semaphore()¶
 - 
bool timeWait(struct timespec *ts)¶
- The same as wait(), except if the decrement can not be performed until ts return false install of blocking. - Return
- ture if the decrement proceeds before ts, else return false.
- Parameters
- ts-- an absolute timeout in seconds and nanoseconds since the Epoch 1970-01-01 00:00:00 +0000(UTC). 
 
 
 - 
void wait()¶
- decrement the semaphore. If the semaphore’s value is 0, then call blocks. 
 - Protected Attributes - 
sem_t sem_¶
 
- 
class ThreadBarrier¶
- 
class paddle::ThreadBarrier¶
- A simple wrapper of thread barrier. The ThreadBarrier disable copy. - Public Functions - 
ThreadBarrier(int count)¶
- Construct Function. Initialize the barrier should wait for count threads in wait(). 
 - 
~ThreadBarrier()¶
 - 
ThreadBarrier(const ThreadBarrier&)¶
 - 
ThreadBarrier &operator=(const ThreadBarrier&)¶
 - 
void wait()¶
- If there were count - 1 threads waiting before, then wake up all the count - 1 threads and continue run together. Else block the thread until waked by other thread . 
 - Protected Attributes - 
pthread_barrier_t barrier_¶
 
- 
class LockedCondition¶
- 
class paddle::LockedCondition¶
- A wrapper for condition variable with mutex. - Inherits from condition_variable - Public Functions - template <class Op>
- 
void notify_one(Op op)¶
- execute op and notify one thread which was blocked. - Parameters
- op-- a thread can do something in op before notify. 
 
 
 - template <class Op>
- 
void notify_all(Op op)¶
- execute op and notify all the threads which were blocked. - Parameters
- op-- a thread can do something in op before notify. 
 
 
 - template <class Predicate>
- 
void wait(Predicate pred)¶
- wait until pred return ture. - Note
- pred shall not apply any non-constant function through the dereferenced iterator.
- Template Parameters
- Predicate-- c++ concepts, describes a function object that takes a single iterator argument that is dereferenced and used to return a value testable as a bool. 
 
 
 - 
std::mutex *mutex()¶
- get mutex. 
 - Protected Attributes - 
std::mutex mutex_¶