Помню, что статические переменные, объявленные внутри методов, не являются потокобезопасными. (См. Что о синглете Meyer?, как упоминалось Тодд Гарднер)
Dog* MyClass::BadMethod()
{
static Dog dog("Lassie");
return &dog;
}
Моя библиотека генерирует код С++ для компиляции конечных пользователей как часть их приложения. Созданный им код должен инициализировать статические переменные в поточно-безопасном межплатформенном режиме. Я хотел бы использовать boost::call_once
для mutex инициализацию переменных, но затем конечные пользователи подвергаются зависимости Boost.
Есть ли способ сделать это, не вызывая дополнительных зависимостей от конечных пользователей?