hpx/concurrency/deque.hpp¶
See Public API for a list of names and headers that are part of the public HPX API.
-
namespace
boost
¶ -
namespace
lockfree
¶ -
-
template<typename
T
, typenamefreelist_t
= caching_freelist_t, typenameAlloc
= std::allocator<T>>
structdeque
¶ Public Types
-
template<>
usingnode
= deque_node<T>¶
-
template<>
usinganchor
= deque_anchor<T>¶
-
template<>
usingnode_allocator
= typename std::allocator_traits<Alloc>::template rebind_alloc<node>¶
-
template<>
usingpool
= typename std::conditional<std::is_same<freelist_t, caching_freelist_t>::value, caching_freelist<node, node_allocator>, static_freelist<node, node_allocator>>::type¶
Public Functions
-
HPX_NON_COPYABLE
(deque)¶
-
~deque
()¶
-
bool
empty
() const¶
-
bool
is_lock_free
() const¶
-
bool
push_left
(T data)¶
-
bool
push_right
(T data)¶
-
bool
pop_left
(T &r)¶
-
bool
pop_left
(T *r)¶
-
bool
pop_right
(T &r)¶
-
bool
pop_right
(T *r)¶
Private Functions
-
node *
alloc_node
(node *lptr, node *rptr, T const &v, tag_t ltag = 0, tag_t rtag = 0)¶
-
node *
alloc_node
(node *lptr, node *rptr, T &&v, tag_t ltag = 0, tag_t rtag = 0)¶
-
void
dealloc_node
(node *n)¶
-
void
stabilize_left
(anchor_pair &lrs)¶
-
void
stabilize_right
(anchor_pair &lrs)¶
-
void
stabilize
(anchor_pair &lrs)¶
-
template<>
-
template<typename
T
>
structdeque_anchor
¶ -
Public Functions
-
deque_anchor
()¶
-
deque_anchor
(deque_anchor const &p)¶
-
deque_anchor
(pair const &p)¶
-
bool
cas
(deque_anchor &expected, deque_anchor const &desired, std::memory_order mo = std::memory_order_acq_rel) volatile¶
-
bool
cas
(pair &expected, deque_anchor const &desired, std::memory_order mo = std::memory_order_acq_rel) volatile¶
-
bool
cas
(deque_anchor &expected, pair const &desired, std::memory_order mo = std::memory_order_acq_rel) volatile¶
-
bool
cas
(pair &expected, pair const &desired, std::memory_order mo = std::memory_order_acq_rel) volatile¶
-
bool
operator==
(volatile deque_anchor const &rhs) const¶
-
bool
operator!=
(volatile deque_anchor const &rhs) const¶
-
bool
operator==
(volatile pair const &rhs) const¶
-
bool
operator!=
(volatile pair const &rhs) const¶
-
bool
is_lock_free
() const¶
Private Members
-
atomic_pair
pair_
¶
-
-
template<typename
T
>
structdeque_node
¶ Public Types
-
typedef detail::tagged_ptr<deque_node>
pointer
¶
Public Functions
-
deque_node
()¶
-
deque_node
(deque_node const &p)¶
-
deque_node
(deque_node *lptr, deque_node *rptr, T const &v, tag_t ltag = 0, tag_t rtag = 0)¶
-
deque_node
(deque_node *lptr, deque_node *rptr, T &&v, tag_t ltag = 0, tag_t rtag = 0)¶
-
typedef detail::tagged_ptr<deque_node>
-
template<typename
-
namespace