Код: Выделить всё
#include
struct BigObject
{
auto get_lock()
{
return std::scoped_lock(m_mutex);
}
private:
std::mutex m_mutex;
};
BigObject big;
int main()
{
auto lock = big.get_lock();
// ...
}
"Обычный" стиль будет для вызывающей стороны. для объявления и инициализации блокировки, но здесь мы инкапсулируем мьютекс и вызываем вызывающую функцию. Таким образом, объект можно заблокировать только через эту точку входа.
Бонусный вопрос: будет ли корректным std::lock_guard вместо std::scoped_lock?< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... -on-itself
Мобильная версия