3 回答
TA贡献2041条经验 获得超4个赞
有时会很不错,因为它为您提供了一个新的作用域,您可以在其中更“干净地”声明新的(自动)变量。
在C++
这也许不那么重要,因为你可以在任何地方引入新的变量,但也许是习惯是C
,你不能这样做,直到C99。:)
由于C++
具有析构函数,因此在范围退出时自动释放资源(文件,互斥对象等)也很方便,这可以使事情变得更整洁。这意味着您可以比在方法开始时获取共享资源的时间短。
TA贡献1858条经验 获得超8个赞
多余的花括号用于定义在花括号内声明的变量的范围。这样做是为了在变量超出范围时调用析构函数。在析构函数中,您可以释放互斥锁(或任何其他资源),以便其他人可以获取它。
在生产代码中,我写了这样的东西:
void f()
{
//some code - MULTIPLE threads can execute this code at the same time
{
scoped_lock lock(mutex); //critical section starts here
//critical section code
//EXACTLY ONE thread can execute this code at a time
} //mutex is automatically released here
//other code - MULTIPLE threads can execute this code at the same time
}
如您所见,通过这种方式,您可以scoped_lock 在一个函数中使用它,同时可以通过使用额外的花括号来定义其范围。这样可以确保即使多余括号外的代码可以同时由多个线程执行,括号内的代码一次也只能由一个线程执行。
- 3 回答
- 0 关注
- 461 浏览
添加回答
举报