Типичное использование бустовских мютексов выглядит как
void SomeClass::SomeMethod() {
//... some code
{
boost::mutex::scoped_lock lock(some_map_mutex_);
some_map_.erase(foo);
}
}
Блок режет глаз и выглядит слегка чужеродно. Поэтому склепал вот такой вот велосипед
#define using_lock(mtx) for(::boost::mutex::scoped_lock lock(mtx), *flag = &lock; flag; flag = 0)
Использовать так
using_lock(some_map_mutex_) {
some_map_.erase(foo);
}




