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 關注
- 500 瀏覽
添加回答
舉報