0
class Foo {
Foo() {};
};
class Bar {
static int counter;
Bar() { ++counter; }
}
很顯然,富:: foo是線程安全的,而酒吧::酒吧是沒有的。
此外,很明顯,如果函數是以這種方式編寫的,以至於它不是線程安全的,那麼清楚地將它放在構造函數中會使該構造函數不是線程安全的。
但是,是否有額外的陷阱,我需要擔心構造函數?即一塊帶有互斥/鎖的代碼,如果它在函數體中,它將是線程安全的,但是如果我將它放在構造函數中,基於C++構造函數的複雜性,會發生奇怪的事情,並且它不再是線程安全的?
謝謝!
編輯:你可以假設我正在使用g ++。