- Tag - a \ref cds_intrusive_hook_tag "tag"
*/
template <class GC, typename Tag = opt::none >
- using node = cds::intrusive::single_link::node< GC, Tag > ;
+ using node = cds::intrusive::single_link::node< GC, Tag >;
/// Base hook
/**
else
++m_PassivePopCollision;
}
- void onEliminationFailed()
+ void onEliminationFailed()
{
++m_EliminationFailed;
}
typedef cds::atomicity::empty_item_counter item_counter;
/// C++ memory ordering model
- /**
+ /**
Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
or \p opt::v::sequential_consistent (sequentially consisnent memory model).
*/
Example: declare \p %TreiberStack with elimination enabled and internal statistics
\code
- typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo,
+ typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo,
typename cds::intrusive::treiber_stack::make_traits<
cds::opt::enable_elimination< true >,
cds::opt::stat< cds::intrusive::treiber_stack::stat<> >
Template arguments:
- \p GC - garbage collector type: \p gc::HP, \p gc::DHP.
Garbage collecting schema must be the same as \p treiber_stack::node GC.
- - \p T - a type the stack contains. A value of type \p T must be derived
+ - \p T - a type the stack contains. A value of type \p T must be derived
from \p treiber_stack::node for \p treiber_stack::base_hook,
or it should have a member of type \p %treiber_stack::node for \p treiber_stack::member_hook,
or it should be convertible to \p %treiber_stack::node for \p treiber_stack::traits_hook.
typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo, myTraits > myStack;
// Equivalent make_traits example:
- typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo,
- typename cds::intrusive::treiber_stack::make_traits<
- cds::opt::stat< cds::intrusive::treiber_stack::stat<> >
+ typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo,
+ typename cds::intrusive::treiber_stack::make_traits<
+ cds::opt::stat< cds::intrusive::treiber_stack::stat<> >
>::type
> myStack;
\endcode
// Stack with elimination back-off enabled
typedef ci::TreiberStack< gc,
myData,
- typename ci::treiber_stack::make_traits<
+ typename ci::treiber_stack::make_traits<
ci::opt::hook< ci::treiber_stack::base_hook< gc > >,
cds::opt::enable_elimination< true >
>::type
// ...
};
- typedef ci::TreiberStack< gc,
- myData,
- typename ci::treiber_stack::make_traits<
+ typedef ci::TreiberStack< gc,
+ myData,
+ typename ci::treiber_stack::make_traits<
ci::opt::hook< ci::treiber_stack::base_hook< gc, tag1 > >
- >::type
+ >::type
> stack1_t;
- typedef ci::TreiberStack< gc,
- myData,
+ typedef ci::TreiberStack< gc,
+ myData,
typename ci::treiber_stack::make_traits<
ci::opt::hook< ci::treiber_stack::base_hook< gc, tag2 > >
>::type
// ...
};
- typedef ci::TreiberStack< gc,
+ typedef ci::TreiberStack< gc,
myData,
typename ci::treiber_stack::make_traits<
ci::opt::hook< ci::treiber_stack::member_hook< offsetof(myData, member_hook_), gc >>
\endcode
*/
template <
- typename GC,
- typename T,
- typename Traits = treiber_stack::traits
+ typename GC,
+ typename T,
+ typename Traits = treiber_stack::traits
>
class TreiberStack
{