s or promises   
(class)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_future_error&action=edit)  
[ future_category  ](/w/cpp/thread/future_category "cpp/thread/future category") (C++11)  |  identifies the future error category   
(function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_future_category&action=edit)  
[ future_errc  ](/w/cpp/thread/future_errc "cpp/thread/future errc") (C++11)  |  identifies the future error codes   
(enum)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_future_errc&action=edit)  
  
###  Safe Reclamation

Safe-reclamation techniques are most frequently used to straightforwardly resolve access-deletion races.  | 

#####  Read-Copy-Update Mechanism  
  
---  
Defined in header ` [ <rcu> ](/w/cpp/header/rcu "cpp/header/rcu") `  
[ rcu_obj_base  ](/mwiki/index.php?title=cpp/thread/rcu_obj_base&action=edit&redlink=1 "cpp/thread/rcu obj base \(page does not exist\)") (C++26)  |  allows an object to be protected by RCU   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_obj_base&action=edit)  
[ rcu_domain  ](/mwiki/index.php?title=cpp/thread/rcu_domain&action=edit&redlink=1 "cpp/thread/rcu domain \(page does not exist\)") (C++26)  |  provides regions of RCU protection   
(class)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_domain&action=edit)  
[ rcu_default_domain  ](/mwiki/index.php?title=cpp/thread/rcu_default_domain&action=edit&redlink=1 "cpp/thread/rcu default domain \(page does not exist\)") (C++26)  |  returns a reference to a static-duration object of type ` std::rcu_domain `   
(function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_default_domain&action=edit)  
[ rcu_synchronize  ](/mwiki/index.php?title=cpp/thread/rcu_synchronize&action=edit&redlink=1 "cpp/thread/rcu synchronize \(page does not exist\)") (C++26)  |  blocks until a protection region unlocks on a RCU domain   
(function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_synchronize&action=edit)  
[ rcu_barrier  ](/mwiki/index.php?title=cpp/thread/rcu_barrier&action=edit&redlink=1 "cpp/thread/rcu barrier \(page does not exist\)") (C++26)  |  may evaluate scheduled operations on a RCU domain and blocks until all preceding evaluations are complete   
(function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_barrier&action=edit)  
[ rcu_retire  ](/mwiki/index.php?title=cpp/thread/rcu_retire&action=edit&redlink=1 "cpp/thread/rcu retire \(page does not exist\)") (C++26)  |  schedules the evaluation of a specified function on a RCU domain, potentially allocating memory, and invoking scheduled evaluations   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_rcu_retire&action=edit)  
  
#####  Hazard Pointers  
  
Defined in header ` [ <hazard_pointer> ](/w/cpp/header/hazard_pointer
"cpp/header/hazard pointer") `  
[ hazard_pointer_obj_base  ](/mwiki/index.php?title=cpp/thread/hazard_pointer_obj_base&action=edit&redlink=1 "cpp/thread/hazard pointer obj base \(page does not exist\)") (C++26)  |  allows an object to be hazard-protectable   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_hazard_pointer_obj_base&action=edit)  
[ hazard_pointer  ](/mwiki/index.php?title=cpp/thread/hazard_pointer&action=edit&redlink=1 "cpp/thread/hazard pointer \(page does not exist\)") (C++26)  |  single-writer multi-reader pointer that can be owned by at most one thread at any point of time   
(class)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/thread/dsc_hazard_pointer&action=edit)  
[ make_hazard_pointer  ](/mwiki/index.php?title=cpp/thread/make_hazard_pointer&action=