27 #ifndef EMBB_CONTAINERS_LOCK_FREE_STACK_H_ 28 #define EMBB_CONTAINERS_LOCK_FREE_STACK_H_ 30 #include <embb/containers/object_pool.h> 31 #include <embb/base/atomic.h> 32 #include <embb/base/function.h> 33 #include <embb/containers/internal/hazard_pointer.h> 34 #include <embb/containers/lock_free_tree_value_pool.h> 107 namespace containers {
117 template<
typename T >
118 class LockFreeStackNode {
123 LockFreeStackNode< T >* next;
143 LockFreeStackNode< T >* next
152 LockFreeStackNode< T >* GetNext();
172 template<
typename Type,
187 delete_pointer_callback;
193 void DeletePointerCallback(internal::LockFreeStackNode<Type>* to_delete);
209 typedef internal::HazardPointer < internal::LockFreeStackNode<Type>* >
210 StackNodeHazardPointer_t;
215 StackNodeHazardPointer_t hazardPointer;
248 size_t GetCapacity();
295 #include <embb/containers/internal/lock_free_stack-inl.h> 297 #endif // EMBB_CONTAINERS_LOCK_FREE_STACK_H_ Definition: lock_free_mpmc_queue.h:40
Class representing atomic variables.
Definition: atomic.h:60
Lock-free value pool using binary tree construction.
Definition: lock_free_tree_value_pool.h:57
Pool for thread-safe management of arbitrary objects.
Definition: object_pool.h:59
Wraps function pointers, member function pointers, and functors with up to five arguments.
Definition: function.h:94
Lock-free stack.
Definition: lock_free_stack.h:174