2014-02-20 2 views
0

Я нашел в docs, что unique_lock может попробовать «приобрести блокировку в неблокирующем режиме».Как настроить как неблокирующий уникальный_lock?

Это нить unique_lock, которая не заблокирована, поскольку она пытается захватить замок в «неблокирующем режиме»? Если да, то это просто изящно терпит неудачу? Будет unlock?

Кроме того, поскольку notify_one не выбрасывает, означает ли это, что если он не может уведомить об этом, он также потерпит неудачу изящно?

Если unique_lock можно установить не ждать успешного lock но не изящно и двигаться дальше с изящным провалов unlock и notify_one, как может unique_lock быть установлены таким образом?

ответ

1

Нечто вроде boost::unique_lock lock(my_lockable, boost::try_to_lock); должно сделать трюк.

lock.owns_lock() вернет true, если замок был приобретен. Если он не был приобретен, вы не должны пытаться его освободить.

Всегда должно быть безопасно позвонить notify_one, даже если никакое условие не ждет его.

+0

Красивые! Большое спасибо, Марк Б.! –

+0

Правильно ли, что 'notify_one' провалится изящно? Я все еще очень нуб. Большое вам спасибо заранее! –

+0

Удивительный! Спасибо огромное! –

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