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< T, LockType, StorageType > Class Template Reference

#include <BlockingQueue.h>

Inheritance diagram for BlockingQueue< T, LockType, StorageType >:
Queue< T > Lockable Cancelable NonCopyable

Public Member Functions

 BlockingQueue ()
 Create a new BlockingQueue.
 
virtual ~BlockingQueue ()
 Destroy this BlockingQueue.
 
virtual void add (const T &item)
 
virtual bool add (const 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 ()
 
- Public Member Functions inherited from Queue< T >
virtual ~Queue ()
 Destroy a Queue.
 
virtual void add (const T &item)=0
 
virtual bool add (const T &item, unsigned long timeout)=0
 
virtual T next ()=0
 
virtual T next (unsigned long timeout)=0
 
virtual void cancel ()=0
 
virtual size_t size ()=0
 
virtual size_t size (unsigned long timeout)=0
 
virtual bool empty ()
 
virtual bool empty (unsigned long timeout)
 
- Public Member Functions inherited from Cancelable
virtual ~Cancelable ()
 Destroy a Cancelable object.
 
virtual void cancel ()=0
 
virtual bool isCanceled ()=0
 
- Public Member Functions inherited from Lockable
virtual ~Lockable ()
 Destroy a Lockable object.
 
virtual void acquire ()=0
 
virtual bool tryAcquire (unsigned long timeout)=0
 
virtual void release ()=0
 

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

◆ acquire()

virtual void acquire ( )
inlinevirtual

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_Exceptionthrown if the calling thread is interrupted before the operation completes.
Postcondition
The Lockable is acquired only if no exception was thrown.

Implements Lockable.

◆ add() [1/2]

virtual void add ( const T &  item)
inlinevirtual

◆ add() [2/2]

virtual bool add ( const T &  item,
unsigned long  timeout 
)
inlinevirtual

◆ cancel()

virtual void cancel ( )
inlinevirtual
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< T >.

◆ isCanceled()

virtual bool isCanceled ( )
inlinevirtual
See also
Queue::isCanceled()

Implements Cancelable.

◆ next() [1/2]

virtual T next ( )
inlinevirtual

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

Returns
T next available value
Exceptions
Cancellation_Exceptionthrown if this Queue has been canceled.
Interrupted_Exceptionthrown 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< T >.

◆ next() [2/2]

virtual T next ( unsigned long  timeout)
inlinevirtual

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

Parameters
timeoutmaximum amount of time (milliseconds) this method may block the calling thread.
Returns
T next available value
Exceptions
Cancellation_Exceptionthrown if this Queue has been canceled.
Timeout_Exceptionthrown if the timeout expires before a value can be retrieved.
Interrupted_Exceptionthrown 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< T >.

◆ release()

virtual void release ( )
inlinevirtual

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.

◆ size() [1/2]

virtual size_t size ( )
inlinevirtual
See also
Queue::size()

Implements Queue< T >.

◆ size() [2/2]

virtual size_t size ( unsigned long  timeout)
inlinevirtual

◆ tryAcquire()

virtual bool tryAcquire ( unsigned long  timeout)
inlinevirtual

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_Exceptionthrown 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: