hpx::unlock_guard#

Defined in header hpx/mutex.hpp.

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
template<typename Lock>
class relock_guard#
#include <unlock_guard.hpp>

The class relock_guard is a mutex wrapper that provides a convenient mechanism for reacquiring a lock that was released by an unlock_guard, for the duration of a scoped block.

relock_guard performs the opposite functionality of unlock_guard within an already-unlocked section.

When a relock_guard object is created, it takes ownership of the underlying Lock associated with the given unlock_guard by locking it. When control leaves the scope in which the relock_guard object was created, the relock_guard is destructed and the underlying Lock is released again (unlocked), restoring the unlocked state managed by the enclosing unlock_guard. In this way, relock_guard allows a temporarily locked section to be nested within an unlocked section created by unlock_guard.

Note

relock_guard is non-copyable and non-movable.

Template Parameters

Lock – The type of the lockable object managed by the associated unlock_guard.

Public Functions

inline explicit relock_guard(unlock_guard<Lock> &ul) noexcept#
relock_guard(relock_guard const&) = delete#
relock_guard(relock_guard&&) = delete#
relock_guard &operator=(relock_guard const&) = delete#
relock_guard &operator=(relock_guard&&) = delete#
inline ~relock_guard()#

Private Members

unlock_guard<Lock> &ul_#
template<typename Lock>
class unlock_guard#
#include <unlock_guard.hpp>

The class unlock_guard is a mutex wrapper that provides a convenient mechanism for releasing a mutex for the duration of a scoped block.

unlock_guard performs the opposite functionality of lock_guard.

When a lock_guard object is created, it attempts to take ownership of the mutex it is given. When control leaves the scope in which the lock_guard object was created, the lock_guard is destructed and the mutex is released. Accordingly, when an unlock_guard object is created, it attempts to release the ownership of the mutex it is given. So, when control leaves the scope in which the unlock_guard object was created, the unlock_guard is destructed and the mutex is owned again. In this way, the mutex is unlocked in the constructor and locked in the destructor, so that one can have an unlocked section within a locked one.

Note

unlock_guard is non-copyable and non-movable.

Template Parameters

Lock – The type of the lockable object managed by the unlock_guard.

Public Functions

inline explicit unlock_guard(Lock &l) noexcept#
unlock_guard(unlock_guard const&) = delete#
unlock_guard(unlock_guard&&) = delete#
unlock_guard &operator=(unlock_guard const&) = delete#
unlock_guard &operator=(unlock_guard&&) = delete#
inline ~unlock_guard()#

Private Members

Lock &l_#

Friends

friend class relock_guard< Lock >
namespace util

Typedefs

using instead = hpx::unlock_guard<Lock>#