Re: Временный блокировщик
От: Chorkov Россия  
Дата: 05.02.24 13:50
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!



M>Где-то в каком-то потоке периодически что-то производится, какие-то действия. Иногда надо временно запретить их производить.


M>В других потоках, или в том же потоке, можно запрещать, рекурсивно, главное, разлочить столько же раз, сколько и залочил.


M>Что-то городить с какими-то примитивами синхронизации не вижу смысла, ну, может я ошибаюсь.

...

M>Ну или как лучше сделать? Может, есть что-то стандартное, чем изобретать велосипеды?


shared_mutex:

class Locable
{
   mutable std::shared_mutex  m_mutex;

public:
   void lock() { m_mutex.lock_shared(); }
   void unlock() { m_mutex.unlock_shared(); }
   bool isLocked() const {
        if( ! m_mutex.try_lock() ) 
             return true;
        m_mutex.unlock();
        return true;
   }
};
Отредактировано 05.02.2024 13:54 Chorkov . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.