Типичное использование бустовских мютексов выглядит как
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); }