C++1x offers a selection of mutex classes:

std::mutex

std::recursive mutex

std::scoped_lock (C ++17)

std::unique_lock, std::shared_lock, std::lock_guard

Strategies for lock classes std::try_to_lock, std::adopt_lock, std::defer_lock

std::lock