@polar_winter

Как правильно написать MutexLocker?

Создал самописную обёртку MutexLocker, согласно RAII.

class pthread_mutex_locker
{
public:
    pthread_mutex_locker(pthread_mutex_wrapper * mu);
    ~pthread_mutex_locker();

private:
    pthread_mutex_wrapper * mutex;
};


Применил свой MutexLocker c анонимным объектом.

// Тело какой-то функции.
{
 pthread_mutex_locker(&mutex);
//Какой-то код

}


Есть подзрение, что анонимный объект уничтожается раньше, чем нужно и не защищает код. Как сделать, что бы он уничтожался во время выхода из функции. Должен ли MutexLocker быть именнованным объетом? Гарантируется ли уничтожение именнованных объектов по выходу из функции,а не вдругом месте?

gcc version 4.8.1 20130909
  • Вопрос задан
  • 2413 просмотров
Пригласить эксперта
Ответы на вопрос 4
gbg
@gbg
Баянист. Тамада. Услуги.
Ваш вариант не пройдет - мьютекс будет уничтожен сразу же после создания. Строго говоря, в C++ нет такого понятия "анонимный экземпляр", есть "временный экземпляр".

Для именованного экземпляра гарантируется уничтожение при выходе за из области видимости - составного оператора {}.
Ответ написан
@Mercury13 Куратор тега C++
Программист на «си с крестами» и не только
pthread_mutex_locker locker(&mutex);

Назови его как-нибудь, и всё будет окей.
Ответ написан
TrueBers
@TrueBers
Гуглю за еду
А чем не угодил std::lock_guard?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 янв. 2020, в 17:40
1000 руб./за проект
26 янв. 2020, в 17:25
10000 руб./за проект
26 янв. 2020, в 17:06
120000 руб./за проект