0
class NumberStorage {
public:
static NumberStorage& instance();
double getNumber();
void setNumber(double d);
private:
NumberStorage() { number = 0.0; };
double number;
};
NumberStorage& NumberStorage::instance()
{
static NumberStorage instance;
return instance;
}
Я думаю, что я где-то читал, что метод instance(), реализованный таким образом, является потокобезопасным. Это верно? Думаю, я также должен заблокировать номер переменной-члена в getNumber() и setNumber()? Как это сделать (C++ 11)?Одиночный класс и безопасность нитей
Виктор: Большое спасибо за Ваш ответ! В чем разница между std :: unique_lock и std :: lock_guard? Последний, похоже, всплывает при поиске std :: mutex. Может ли мьютекс также быть переменной-членом? –
Andy
Конечно, мьютекс может быть членом класса. О 'std :: lock_guard' - [см. Здесь] (http://stackoverflow.com/questions/20516773/stdunique-lockstdmutex-or-stdlock-guardstdmutex) –