Edit

Share via


mutex class (C++ Standard Library)

Represents a mutex type. Objects of this type can be used to enforce mutual exclusion within a program.

Syntax

class mutex;

Members

Public constructor/destructor

Name Description
mutex Constructs a mutex object.
~mutex Releases any resources that were used by the mutex object.

Public methods

Name Description
lock Blocks the calling thread until the thread obtains ownership of the mutex.
native_handle Returns the implementation-specific type that represents the mutex handle.
try_lock Attempts to obtain ownership of the mutex without blocking.
unlock Releases ownership of the mutex.

Requirements

Header: <mutex>

Namespace: std

lock

Blocks the calling thread until the thread obtains ownership of the mutex.

void lock();

Remarks

If the calling thread already owns the mutex, the behavior is undefined.

Constructor

Constructs a mutex object that isn't locked.
Before Visual Studio 2022 17.10, Microsoft's implementation of this constructor wasn't constexpr. Now it's constexpr.

mutex() noexcept;

Destructor

Releases any resources that are used by the mutex object.

~mutex();

Remarks

If the object is locked when the destructor runs, the behavior is undefined.

native_handle

Returns the implementation-specific type that represents the mutex handle. The mutex handle can be used in implementation-specific ways.

native_handle_type native_handle();

Return Value

native_handle_type is defined as a Concurrency::critical_section *. It's cast as void *.

try_lock

Attempts to obtain ownership of the mutex without blocking.

bool try_lock();

Return value

true if the method successfully obtains ownership of the mutex; otherwise, false.

Remarks

If the calling thread already owns the mutex, the behavior is undefined.

unlock

Releases ownership of the mutex.

void unlock();

Remarks

If the calling thread doesn't own the mutex, the behavior is undefined.

See also

Header Files Reference
<mutex>