UCommon
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes
ucommon::ConditionalAccess Class Reference

The conditional rw seperates scheduling for optizming behavior or rw locks. More...

#include <condition.h>

Inheritance diagram for ucommon::ConditionalAccess:
Inheritance graph
[legend]
Collaboration diagram for ucommon::ConditionalAccess:
Collaboration graph
[legend]

Public Member Functions

void access (void)
 Access mode shared thread scheduling.
 
void commit (void)
 Complete exclusive mode write scheduling.
 
 ConditionalAccess ()
 Initialize and construct conditional.
 
void limit_sharing (unsigned max)
 Specify a maximum sharing (access) limit. More...
 
void modify (void)
 Exclusive mode write thread scheduling.
 
void release (void)
 Release access mode read scheduling.
 
 ~ConditionalAccess ()
 Destroy conditional, release any blocked threads.
 

Protected Member Functions

void broadcast (void)
 Signal the conditional to release all broadcast threads.
 
void lock (void)
 Lock the conditional's supporting mutex.
 
void signal (void)
 Signal the conditional to release one signalled thread.
 
void unlock (void)
 Unlock the conditional's supporting mutex.
 
bool waitBroadcast (timeout_t timeout)
 Conditional wait for broadcast on millisecond timeout. More...
 
bool waitBroadcast (struct timespec *timeout)
 Conditional wait for broadcast on timespec timeout. More...
 
void waitBroadcast (void)
 Wait (block) until broadcast.
 
bool waitSignal (timeout_t timeout)
 Conditional wait for signal on millisecond timeout. More...
 
bool waitSignal (struct timespec *timeout)
 Conditional wait for signal on timespec timeout. More...
 
void waitSignal (void)
 Wait (block) until signalled.
 

Static Protected Member Functions

static void set (struct timespec *hires, timeout_t timeout)
 Convert a millisecond timeout into use for high resolution conditional timers. More...
 

Protected Attributes

pthread_cond_t bcast
 
unsigned pending
 
unsigned sharing
 
unsigned waiting
 

Static Protected Attributes

static unsigned max_sharing
 

Detailed Description

The conditional rw seperates scheduling for optizming behavior or rw locks.

This varient of conditonal seperates scheduling read (broadcast wakeup) and write (signal wakeup) based threads. This is used to form generic rwlock's as well as the specialized condlock.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 337 of file condition.h.

Member Function Documentation

◆ limit_sharing()

void ucommon::ConditionalAccess::limit_sharing ( unsigned  max)

Specify a maximum sharing (access) limit.

This can be used to detect locking errors, such as when aquiring locks that are not released.

Parameters
maxsharing level.

◆ set()

static void ucommon::ConditionalAccess::set ( struct timespec *  hires,
timeout_t  timeout 
)
inlinestaticprotected

Convert a millisecond timeout into use for high resolution conditional timers.

Parameters
hirestimespec representation to set.
timeoutto convert.

Definition at line 388 of file condition.h.

Here is the call graph for this function:

◆ waitBroadcast() [1/2]

bool ucommon::ConditionalAccess::waitBroadcast ( timeout_t  timeout)
protected

Conditional wait for broadcast on millisecond timeout.

Parameters
timeoutin milliseconds.
Returns
true if signalled, false if timer expired.

◆ waitBroadcast() [2/2]

bool ucommon::ConditionalAccess::waitBroadcast ( struct timespec *  timeout)
protected

Conditional wait for broadcast on timespec timeout.

Parameters
timeoutas a high resolution timespec.
Returns
true if signalled, false if timer expired.

◆ waitSignal() [1/2]

bool ucommon::ConditionalAccess::waitSignal ( timeout_t  timeout)
protected

Conditional wait for signal on millisecond timeout.

Parameters
timeoutin milliseconds.
Returns
true if signalled, false if timer expired.

◆ waitSignal() [2/2]

bool ucommon::ConditionalAccess::waitSignal ( struct timespec *  timeout)
protected

Conditional wait for signal on timespec timeout.

Parameters
timeoutas a high resolution timespec.
Returns
true if signalled, false if timer expired.

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