
Hello Andreas,
However, if that's bother, I think then only something like Loki Singleton pattern will do. You then need a double lock for accessing it correctly, something like this:
static state_dispatcher const& get() { static state_dispatcher* pInstance; scoped_lock first_lock(m_mutex1) if (!pInstance) { scoped_lock second_lock(m_mutex2); if (!pInstance) { pInstance = new state_dispatcher; } } return *pInstance; }
From where did you get m_mutex1 & m_mutex2?? Where are they initialized?
I guess there should have been only "scoped_lock second_lock(m_mutex2)" and no "scoped_lock first_lock(m_mutex1)". Still, m_mutex2 has to be initialized somewhere and I see no other way for it than to be global, in namespace scope. But once again, I'm not sure even this is actually safe since it's dynamic initialization which apparently may be done concurrently. -- Best regards, Andrey mailto:andysem@mail.ru