hpx/thread_support/unlock_guard.hpp#

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

namespace hpx
template<typename Mutex>
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 desctuctor, so that one can have an unlocked section within a locked one.

Public Types

using mutex_type = Mutex#

Public Functions

HPX_NON_COPYABLE(unlock_guard)#
inline explicit constexpr unlock_guard(Mutex &m) noexcept#
inline ~unlock_guard()#

Private Members

Mutex &m_#
namespace util

Typedefs

using instead = hpx::unlock_guard<Mutex>