ucc::ConditionalAccess Class Reference

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

#include <thread.h>

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

Public Member Functions

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

Protected Member Functions

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

Static Protected Member Functions

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

Protected Attributes

unsigned pending
unsigned waiting
unsigned 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@gnutelephony.org>

Definition at line 194 of file thread.h.


Member Function Documentation

static void ucc::ConditionalAccess::gettimeout ( timeout_t  timeout,
struct timespec *  hires 
) [inline, static, protected]

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

Parameters:
timeout to convert.
hires timespec representation to fill.

Reimplemented from ucc::Conditional.

Definition at line 239 of file thread.h.

void ucc::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:
max sharing level.
bool ucc::ConditionalAccess::waitBroadcast ( struct timespec *  timeout  )  [protected]

Conditional wait for broadcast on timespec timeout.

Parameters:
timeout as a high resolution timespec.
Returns:
true if signalled, false if timer expired.
bool ucc::ConditionalAccess::waitBroadcast ( timeout_t  timeout  )  [protected]

Conditional wait for broadcast on millisecond timeout.

Parameters:
timeout in milliseconds.
Returns:
true if signalled, false if timer expired.
bool ucc::ConditionalAccess::waitSignal ( struct timespec *  timeout  )  [protected]

Conditional wait for signal on timespec timeout.

Parameters:
timeout as a high resolution timespec.
Returns:
true if signalled, false if timer expired.
bool ucc::ConditionalAccess::waitSignal ( timeout_t  timeout  )  [protected]

Conditional wait for signal on millisecond timeout.

Parameters:
timeout in milliseconds.
Returns:
true if signalled, false if timer expired.

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

Generated on 28 Dec 2009 for UCommon by  doxygen 1.6.1