ile lock_guard kullanmak ve bu mekanizma boost::lock_guard
kapsam dışına gider kez kilidi çıkacak belli olacak? Bu iseBen <code>boost::mutex</code> nesne üzerinde kilit elde etmeye <code>boost::lock_guard</code> kullanabilirsiniz try_lock_for
{
boost::lock_guard<boost::mutex> lock(a_mutex);
// Do the work
}
dava, a_mutex
bakılmaksızın kod bloğu istisna veya vermeyerek çıkıldı bakılmaksızın çıkacak. Ayrıca bir usul try_lock_for(period)
, örneğin destekleyen bir boost::timed_mutex
Öte yandan
if(a_timed_mutex.try_lock_for(boost::chrono::seconds(1))) {
// Do the work
a_timed_mutex.unlock(); // <- This is needed!
} else {
// Handle the acquisition failure
}
Bu kod olmaz unlock()
if
ifadesinin true
blok bir istisna ile çıkıldı ise a_timed_mutex
.
Soru: Boost (ve bildiğim kadarıyla gördüğünüz gibi, ne C++ 11 standart) try_lock()
veya try_lock_for(period)
ile çalışır lock_guard
bir varyantını sunmak için görünmüyor. İkinci durumu ele almak için "önerilen" yol veya en iyi uygulama nedir?