Standard library header <hazard_pointer> (C++26)
From cppreference.net
C++
Standard library headers
此头文件是 线程支持 库的组成部分。
类 |
||
|
(C++26)
|
允许对象具备危险指针保护能力
(类模板) |
|
|
(C++26)
|
单写者多读者指针,任意时刻最多只能被一个线程持有
(类) |
|
函数 |
||
|
(C++26)
|
构造危险指针
(函数) |
|
|
(C++26)
|
特化
std::swap
算法
(函数模板) |
|
概要
namespace std { // 危险指针对象基类 template<class T, class D = default_delete<T>> class hazard_pointer_obj_base; // 危险指针 class hazard_pointer; // 创建危险指针 hazard_pointer make_hazard_pointer(); void swap(hazard_pointer&, hazard_pointer&) noexcept; }
类模板 std::hazard_pointer_obj_base
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; // 仅用于说明 }; }
类 std::hazard_pointer
namespace std { class hazard_pointer { public: hazard_pointer() noexcept; hazard_pointer(hazard_pointer&&) noexcept; hazard_pointer& operator=(hazard_pointer&&) noexcept; ~hazard_pointer(); bool empty() const noexcept; 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; }; }