If you can read this text, it means you are not experiencing this website at its best. This website is designed for used with a standards-compliant browser.
Current version: 2.3.2
ZThreads
A platform-independent, multi-threading and synchronization library for C++
Home Documentation Downloads CVS Contact

BlockingQueue Class Template Reference

#include <BlockingQueue.h>

Inheritance diagram for BlockingQueue:

Queue Lockable Cancelable NonCopyable List of all members.

Public Member Functions

 BlockingQueue ()
 Create a new BlockingQueue.
virtual ~BlockingQueue ()
 Destroy this BlockingQueue.
virtual void add (const T &item)
virtual bool add (T item, unsigned long timeout)
virtual T next ()
virtual T next (unsigned long timeout)
virtual void cancel ()
virtual bool isCanceled ()
virtual size_t size ()
virtual size_t size (unsigned long timeout)
virtual void acquire ()
virtual bool tryAcquire (unsigned long timeout)
virtual void release ()

Detailed Description

template<class T, class LockType, typename StorageType = std::deque<T>>
class ZThread::BlockingQueue< T, LockType, StorageType >

Author:
Eric Crahen <http://www.code-foo.com>
Date:
<2003-07-16T12:01:43-0400>
Version:
2.3.0
Like a LockedQueue, a BlockingQueue is a Queue implementation that provides serialized access to the items added to it. It differs by causing threads accessing the next() methods to block until a value becomes available.


Member Function Documentation

virtual void acquire  )  [inline, virtual]
 

Acquire the Lockable object.

This method may or may not block the caller for an indefinite amount of time. Those details are defined by specializations of this class.

Exceptions:
Interrupted_Exception thrown if the calling thread is interrupted before the operation completes.
Postcondition:
The Lockable is acquired only if no exception was thrown.

Implements Lockable.

virtual bool add item,
unsigned long  timeout
[inline, virtual]
 

See also:
Queue::add(const T& item, unsigned long timeout)

virtual void add const T &  item  )  [inline, virtual]
 

See also:
Queue::add(const T& item)

Implements Queue.

virtual void cancel  )  [inline, virtual]
 

See also:
Queue::cancel()
Postcondition:
If threads are blocked on one of the next() functions then they will be awakened with a Cancellation_Exception.

Implements Queue.

virtual bool isCanceled  )  [inline, virtual]
 

See also:
Queue::isCanceled()

Implements Cancelable.

virtual T next unsigned long  timeout  )  [inline, virtual]
 

Get a value from this Queue. The calling thread may block indefinitely.

Parameters:
timeout maximum amount of time (milliseconds) this method may block the calling thread.
Returns:
T next available value
Exceptions:
Cancellation_Exception thrown if this Queue has been canceled.
Timeout_Exception thrown if the timeout expires before a value can be retrieved.
Interrupted_Exception thrown if the calling thread is interrupted before a value becomes available.
Precondition:
The Queue should not have been canceled prior to the invocation of this function.
Postcondition:
The value returned will have been removed from the Queue.
See also:
Queue::next(unsigned long timeout)

Implements Queue.

virtual T next  )  [inline, virtual]
 

Get a value from this Queue. The calling thread may block indefinitely.

Returns:
T next available value
Exceptions:
Cancellation_Exception thrown if this Queue has been canceled.
Interrupted_Exception thrown if the calling thread is interrupted before a value becomes available.
Precondition:
The Queue should not have been canceled prior to the invocation of this function.
Postcondition:
The value returned will have been removed from the Queue.
See also:
Queue::next()

Implements Queue.

virtual void release  )  [inline, virtual]
 

Release the Lockable object.

This method may or may not block the caller for an indefinite amount of time. Those details are defined by specializations of this class.

Postcondition:
The Lockable is released only if no exception was thrown.

Implements Lockable.

virtual size_t size unsigned long  timeout  )  [inline, virtual]
 

See also:
Queue::size(unsigned long timeout)

Implements Queue.

virtual size_t size  )  [inline, virtual]
 

See also:
Queue::size()

Implements Queue.

virtual bool tryAcquire unsigned long  timeout  )  [inline, virtual]
 

Attempt to acquire the Lockable object.

This method may or may not block the caller for a definite amount of time. Those details are defined by specializations of this class; however, this method includes a timeout value that can be used to limit the maximum amount of time that a specialization could block.

Parameters:
timeout - maximum amount of time (milliseconds) this method could block
Returns:
  • true if the operation completes and the Lockable is acquired before the timeout expires.
  • false if the operation times out before the Lockable can be acquired.
Exceptions:
Interrupted_Exception thrown if the calling thread is interrupted before the operation completes.
Postcondition:
The Lockable is acquired only if no exception was thrown.

Implements Lockable.


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