2015-07-18 7 views
0

Если создать уникальный_lock, как показано ниже, могу ли я разблокировать его, не уничтожая или не выйдя из области видимости? Другими словами, это безопасно/приемлемо?разблокировка std :: unique_lock без его уничтожения

std::mutex queueMutex; 

// My understanding is that this locks the mutex 
std::unique_lock<std::mutex> lk(queueMutex); 
{ 
    // My critical section 
} 

// Is it unlocking it properly, or do I have to pop it from the stack? 
lk.unlock(); 

thx!

ответ

0

Это безопасно и приемлемо, позвонив по телефону unlock(), он откроет мьютексы и сделает unique_lock, чтобы забыть об этом, чтобы он не разблокировал его снова в dtor.

Сказав это, область обзора предпочтительнее в большинстве случаев для удобства чтения, поскольку если функция/область длинна и unlock находится внутри if или другой условной конструкции, для читателя может быть трудным следовать.

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

  • Нет связанных вопросов^_^