This header is part of thethread support library.
Classes | ||
(C++26) | allows an object to be hazard-protectable (class template)[edit] | |
(C++26) | single-writer multi-reader pointer that can be owned by at most one thread at any point of time (class)[edit] | |
Functions | ||
(C++26) | constructs a hazard pointer (function)[edit] | |
specializes thestd::swap algorithm (function template)[edit] |
namespace std{// hazard_pointer_obj_basetemplate<class T,class D= default_delete<T>>class hazard_pointer_obj_base; // hazard_pointerclass hazard_pointer; // make_hazard_pointer hazard_pointer make_hazard_pointer();void swap(hazard_pointer&, hazard_pointer&)noexcept;}
namespace std{template<class T,class D= default_delete<T>>class hazard_pointer_obj_base{public:void retire(D d= D())noexcept;protected: hazard_pointer_obj_base()=default; hazard_pointer_obj_base(const hazard_pointer_obj_base&)=default; hazard_pointer_obj_base(hazard_pointer_obj_base&&)=default; hazard_pointer_obj_base& operator=(const hazard_pointer_obj_base&)=default; hazard_pointer_obj_base& operator=(hazard_pointer_obj_base&&)=default; ~hazard_pointer_obj_base()=default;private: D deleter;// exposition only};}
namespace std{class hazard_pointer{public: hazard_pointer()noexcept; hazard_pointer(hazard_pointer&&)noexcept; hazard_pointer& operator=(hazard_pointer&&)noexcept; ~hazard_pointer(); bool empty()constnoexcept;template<class T> T* protect(const atomic<T*>& src)noexcept;template<class T>bool try_protect(T*& ptr,const atomic<T*>& src)noexcept;template<class T>void reset_protection(const T* ptr)noexcept;void reset_protection(nullptr_t= nullptr)noexcept;void swap(hazard_pointer&)noexcept;};}