Recuerdo haber leído que las variables estáticas declaradas dentro de los métodos no son seguras para subprocesos. (Ver What about the Meyer's singleton? como se ha mencionado por Todd Gardner)Variables estáticas a prueba de roscas sin muteos?
Dog* MyClass::BadMethod()
{
static Dog dog("Lassie");
return &dog;
}
Mi biblioteca genera código C++ para los usuarios finales para compilar como parte de su aplicación. El código que genera necesita inicializar variables estáticas de una manera multiplataforma segura para subprocesos. Me gustaría usar boost::call_once
para excluir la inicialización de la variable pero luego los usuarios finales están expuestos a la dependencia de Boost.
¿Hay alguna manera de hacerlo sin forzar dependencias adicionales en los usuarios finales?
También puede vincular estáticamente en bibliotecas de impulso a las suyas, luego puede usar impulsar todo lo que quiera sin temor a molestar a sus usuarios. – Ben
posible duplicado de [¿Es segura la inicialización de la variable estática local en C++ 11?] (Http://stackoverflow.com/questions/8102125/is-local-static-variable-initialization-thread-safe-in-c11) –
@LucianAdrianGrijincu, esta pregunta es anterior a C++ 11 (se publicó en 2009) por lo que, aunque su pregunta está relacionada, no es un duplicado estricto. Gracias por el enlace. – Gili