|
pion-net
4.0.7
|
#include <PionLockFreeQueue.hpp>
Classes | |
| struct | QueueNode |
| data structure used to wrap each item in the queue More... | |
Public Member Functions | |
| PionLockFreeQueue (void) | |
| constructs a new PionLockFreeQueue | |
| virtual | ~PionLockFreeQueue () |
| virtual destructor | |
| bool | empty (void) const |
| returns true if the queue is empty; false if it is not | |
| std::size_t | size (void) const |
| returns the number of items that are currently in the queue | |
| volatile void | clear (void) |
| void | push (const T &t) |
| bool | pop (T &t) |
Protected Types | |
|
typedef boost::lockfree::tagged_ptr < QueueNode > | QueueNodePtr |
| data type for an atomic QueueNode pointer | |
Protected Member Functions | |
| QueueNode * | createNode (void) |
| returns a new queue node item for use in the queue | |
| void | destroyNode (QueueNode *node_ptr) |
| frees memory for an existing queue node item | |
PionLockFreeQueue: a FIFO queue that is thread-safe and lock-free
| volatile void pion::PionLockFreeQueue::clear | ( | void | ) | [inline] |
clears the queue by removing all remaining items WARNING: this is NOT thread-safe!
Definition at line 117 of file PionLockFreeQueue.hpp.
References empty(), destroyNode(), and boost::lockfree::tagged_ptr::get_ptr().
Referenced by ~PionLockFreeQueue().
| bool pion::PionLockFreeQueue::pop | ( | T & | t | ) | [inline] |
pops the next item from the top of the queue
| t | assigned to the item at the top of the queue, if it is not empty |
Definition at line 173 of file PionLockFreeQueue.hpp.
References boost::lockfree::tagged_ptr::get_ptr(), boost::lockfree::tagged_ptr::cas(), and destroyNode().
| void pion::PionLockFreeQueue::push | ( | const T & | t | ) | [inline] |
pushes a new item into the back of the queue
| t | the item to add to the back of the queue |
Definition at line 131 of file PionLockFreeQueue.hpp.
References createNode(), boost::lockfree::tagged_ptr::get_ptr(), and boost::lockfree::tagged_ptr::cas().
1.7.5