Ricordo di aver letto che le variabili statiche dichiarate all'interno metodi non è thread-safe. (Vedere What about the Meyer's singleton? come detto da Todd Gardner)variabili statiche thread-safe senza mutexing?
Dog* MyClass::BadMethod()
{
static Dog dog("Lassie");
return &dog;
}
Biblioteca genera codice C++ per gli utenti finali a compilare come parte della loro applicazione. Il codice che genera deve inizializzare le variabili statiche in un modo cross-platform sicuro per i thread. Mi piacerebbe usare boost::call_once
al mutex inizializzazione delle variabili, ma poi gli utenti finali sono esposti alla dipendenza Boost.
Esiste un modo per me di fare questo senza forzare le dipendenze in più sugli utenti finali?
È anche possibile collegare in modo statico le librerie di boost in proprio, quindi è possibile utilizzare boost tutto ciò che si desidera senza timore di disturbo per gli utenti. – Ben
possibile duplicato di [Inizializzazione di variabili statiche locali thread-safe in C++ 11?] (Http://stackoverflow.com/questions/8102125/is-local-static-variable-initialization-thread-safe-in-c11 –
@LucianAdrianGrijincu, questa domanda è precedente a C++ 11 (è stata pubblicata nel 2009) quindi, sebbene la tua domanda sia correlata, non è un duplicato rigoroso. Grazie per il link. – Gili