Ручная блокировка уникальной / общей повышенной блокировки

0

Я работал над обратным шаблоном работника/потребителя. Между этими 4 методами я буду выполнять операции записи/чтения.

...
void beginWrite();
void endWrite();

void beginRead();
void endRead();
...

Я знаю только для общего/уникального замка. Итак, как это делается вручную через общий/уникальный замок? Поэтому я бы заблокировал общий доступ в beginRead и выпустил в endRead. Или заблокировать/освободить в другой поток уникальный замок?

  • 0
    Какой тип блокировки? boost::shared_mutex ?
  • 0
    Просто убедитесь, что вы разблокируете замок при любых обстоятельствах (за исключением, я смотрю на вас )
Теги:
multithreading
boost

1 ответ

1
Лучший ответ

У Boost shared locks есть функции, которые отлично соответствуют перечисленным вами функциям. Они lock (получают эксклюзивную блокировку), unlock (освобождают эксклюзивную блокировку), lock_shared (получают общую блокировку) и unlock_shared (деблокируют разделяемую блокировку).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню