Documentation Home

Register an object for reclamation. Reclamation may happen on a background thread, or on a thread that explicitly invokes jss::rcu_barrier or jss::rcu_synchronize.

namespace jss
    template<typename T,typename Deleter = std::default_delete>
    void rcu_retire(T* p,Deleter d={});

#include <jss/rcu.hpp>


Deleter must be MoveConstructible.


Move-constructs the deleter d into internal storage D. Registers p for reclamation by the invocation of D(p). Reclamation will occur on an unspecified thread created by the implementation, or a thread that invokes jss::rcu_barrier or jss::rcu_synchronize.


std::bad_alloc if sufficient internal storage could not be allocated. Any exception thrown by the move-construction of d.


If this invocation of jss::rcu_retire happens-before an invocation of jss::rcu_barrier or jss::rcu_synchronize, the completion of the reclamation happens-before the completion of that invocation of jss::rcu_barrier or jss::rcu_synchronize.

See Also