2013-12-23 2 views
0

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

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

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

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

+0

Какой тип замка? 'Повышение :: shared_mutex'? –

+0

Просто убедитесь, что вы открываете замок во всех * обстоятельствах (исключения, я смотрю на _you_) –

ответ

1

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

Смежные вопросы