Flat-combining intrusive queue.
More...
#include <cds/intrusive/fcqueue.h>
|
typedef T | value_type |
| Value type.
|
|
typedef Container | container_type |
| Sequential container type.
|
|
typedef Traits | traits |
| Queue traits.
|
|
typedef traits::disposer | disposer |
| The disposer functor. The disposer is used only in clear() function.
|
|
typedef traits::stat | stat |
| Internal statistics type.
|
|
|
| FCQueue () |
| Initializes empty queue object.
|
|
| FCQueue (unsigned int nCompactFactor, unsigned int nCombinePassCount) |
| Initializes empty queue object and gives flat combining parameters. More...
|
|
bool | enqueue (value_type &val) |
| Inserts a new element at the end of the queue. More...
|
|
bool | push (value_type &val) |
| Inserts a new element at the end of the queue (a synonym for enqueue)
|
|
value_type * | dequeue () |
| Removes the next element from the queue. More...
|
|
value_type * | pop () |
| Removes the next element from the queue (a synonym for dequeue)
|
|
void | clear (bool bDispose=false) |
| Clears the queue. More...
|
|
template<typename Func > |
void | apply (Func f) |
| Exclusive access to underlying queue object. More...
|
|
template<typename Func > |
void | apply (Func f) const |
| Exclusive access to underlying queue object. More...
|
|
size_t | size () const |
| Returns the number of elements in the queue. More...
|
|
bool | empty () const |
| Checks if the queue is empty. More...
|
|
stat const & | statistics () const |
| Internal statistics.
|
|
|
static constexpr const bool | c_bEliminationEnabled = traits::enable_elimination |
| true if elimination is enabled
|
|
template<typename T, class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
class cds::intrusive::FCQueue< T, Container, Traits >
Flat-combining intrusive queue.
Flat combining sequential intrusive queue.
Template parameters:
T
- a value type stored in the queue
Container
- sequential intrusive container with push_back
and pop_front
functions. Default is boost::intrusive::list
Traits
- type traits of flat combining, default is fcqueue::traits
. fcqueue::make_traits
metafunction can be used to construct fcqueue::traits
specialization
◆ FCQueue()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Initializes empty queue object and gives flat combining parameters.
- Parameters
-
nCompactFactor | Flat combining: publication list compacting factor |
nCombinePassCount | Flat combining: number of combining passes for combiner thread |
◆ apply() [1/2]
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
template<typename Func >
Exclusive access to underlying queue object.
The functor f
can do any operation with underlying container_type
in exclusive mode. For example, you can iterate over the queue. Func
signature is:
◆ apply() [2/2]
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
template<typename Func >
Exclusive access to underlying queue object.
The functor f
can do any operation with underlying container_type
in exclusive mode. For example, you can iterate over the queue. Func
signature is:
◆ clear()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Clears the queue.
If bDispose
is true
, the disposer provided in Traits
class' template parameter will be called for each removed element.
◆ dequeue()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Removes the next element from the queue.
If the queue is empty the function returns nullptr
◆ empty()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Checks if the queue is empty.
If the combining is in process the function waits while it is done.
◆ enqueue()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Inserts a new element at the end of the queue.
The function always returns true
.
◆ size()
template<typename T , class Container = boost::intrusive::list<T>, typename Traits = fcqueue::traits>
Returns the number of elements in the queue.
Note that size() == 0
is not mean that the queue is empty because combining record can be in process. To check emptiness use empty function.
The documentation for this class was generated from the following file: