#include <ProducerConsumer.h>
Collaboration diagram for qpid::sys::ProducerConsumer:
Public Member Functions | |
ProducerConsumer (size_t init_items=0) | |
void | shutdown () |
Wake any threads waiting for ProducerLock or ConsumerLock. | |
bool | isShutdown () |
True if queue is shutdown. | |
size_t | available () const |
Number of items available for consumers. | |
size_t | consumers () const |
Number of consumers waiting for items. | |
bool | empty () const |
True if available == 0. | |
Classes | |
struct | ConsumerLock |
Lock for code that consumes items. More... | |
class | Lock |
Base class for producer and consumer locks. More... | |
struct | ProducerLock |
Lock for code that produces items. More... |
Producers increase the number of available items, consumers reduce it. Consumers wait till an item is available. Waiting threads can be woken for shutdown using shutdown().
Note: Currently implements unbounded producer-consumer, i.e. no limit to available items, producers never block. Can be extended to support bounded PC if required.
TODO aconway 2007-02-13: example, from tests.
void qpid::sys::ProducerConsumer::shutdown | ( | ) |
Wake any threads waiting for ProducerLock or ConsumerLock.