14 T * tmp = instance_.load(std::memory_order_consume);
16 std::lock_guard<std::mutex> guard(instantiation_mutex);
17 tmp = instance_.load(std::memory_order_consume);
20 instance_.store(tmp, std::memory_order_release);
26 static std::atomic<T *> instance_;
27 static std::mutex instantiation_mutex;
31 std::atomic<T *> Singleton<T>::instance_(0);
34 std::mutex Singleton<T>::instantiation_mutex;
47 Lockguard<MutexPosix> guard(&_instantiation_mutex);
59 static MutexPosix _instantiation_mutex;
64 T *Singleton<T>::_instance(0);
67 MutexPosix Singleton<T>::_instantiation_mutex;