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={});
}
Header

#include <jss/rcu.hpp>

Requires:

Deleter must be MoveConstructible.

Effects:

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.

Throws:

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

Synchronization:

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