В настоящее время я пытаюсь написать потокобезопасный синглтон (по крайней мере, с точки зрения построения и разрушения), используя boost :: mutex.Я прочитал, что boost mutex не может быть инициализирован статически (я потерял ссылку, где я его читал, извините), поэтому, чтобы обойти это, я попробовал это, если потокобезопасность для строительства и разрушения:этот потокобезопасный, или я должен использовать boost :: call_once?Будет ли повышение, как только даст мне какое-либо преимущество в производительности по сравнению с этим подходом?
РЕДАКТИРОВАТЬ: Хорошо, моя первая идея была явно не правильной.Чтобы прояснить вопрос.Может ли boost :: mutex безопасно инициализироваться статически?Как это:
class Singleton
{
private:
static boost::mutex m_mutex;
public:
static Singleton & getInstance()
{
boost::lock_guard lock(m_mutex);
static T instance;
return instance;
}
};
Это рабочий подход или на самом деле небезопасно инициировать boost :: mutex статически (это то, что я прочитал)?
EDIT2 : Ах, это была ссылка между прочим http://uint32t.blogspot.com/2007/12/you-lazy-bastard-part-1.html