Flat-combining stack.
More...
#include <cds/container/fcstack.h>
|
typedef T | value_type |
| Value type.
|
|
typedef Stack | stack_type |
| Sequential stack class.
|
|
typedef Traits | traits |
| Stack traits.
|
|
typedef traits::stat | stat |
| Internal statistics type.
|
|
|
| FCStack () |
| Initializes empty stack object.
|
|
| FCStack (unsigned int nCompactFactor, unsigned int nCombinePassCount) |
| Initializes empty stack object and gives flat combining parameters. More...
|
|
bool | push (value_type const &val) |
| Inserts a new element at the top of stack. More...
|
|
bool | push (value_type &&val) |
| Inserts a new element at the top of stack (move semantics) More...
|
|
bool | pop (value_type &val) |
| Removes the element on top of the stack. More...
|
|
void | clear () |
| Clears the stack.
|
|
template<typename Func > |
void | apply (Func f) |
| Exclusive access to underlying stack object. More...
|
|
template<typename Func > |
void | apply (Func f) const |
| Exclusive access to underlying stack object. More...
|
|
size_t | size () const |
| Returns the number of elements in the stack. More...
|
|
bool | empty () |
| Checks if the stack 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 Stack = std::stack<T>, typename Traits = fcstack::traits>
class cds::container::FCStack< T, Stack, Traits >
Flat-combining stack.
Flat combining sequential stack.
Template parameters:
T
- a value type stored in the stack
Stack
- sequential stack implementation, default is std::stack<T>
Trats
- type traits of flat combining, default is fcstack::traits
fcstack::make_traits
metafunction can be used to construct specialized fcstack::traits
◆ FCStack()
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Initializes empty stack 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 Stack = std::stack<T>, typename Traits = fcstack::traits>
template<typename Func >
Exclusive access to underlying stack object.
The functor f
can do any operation with underlying stack_type
in exclusive mode. For example, you can iterate over the stack. Func
signature is:
◆ apply() [2/2]
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
template<typename Func >
Exclusive access to underlying stack object.
The functor f
can do any operation with underlying stack_type
in exclusive mode. For example, you can iterate over the stack. Func
signature is:
◆ empty()
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Checks if the stack is empty.
If the combining is in process the function waits while combining done.
◆ pop()
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Removes the element on top of the stack.
val
takes a copy of top element
◆ push() [1/2]
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Inserts a new element at the top of stack.
The content of the new element initialized to a copy of val
.
◆ push() [2/2]
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Inserts a new element at the top of stack (move semantics)
The content of the new element initialized to a copy of val
.
◆ size()
template<typename T , class Stack = std::stack<T>, typename Traits = fcstack::traits>
Returns the number of elements in the stack.
Note that size() == 0
is not mean that the stack 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: