std::once_flag 确保在多线程环境中某段代码只执行一次,这在实现单例模式的时候非常有用。 这里举个使用 std::once_flag 实现线程安全的单例模式的例子。 #include <iostream> #include <mutex> #include <thread> #include <memory> class Singleton { private: Singleton() { std::cout << "Singleton con...
// File1.cppClassA;staticstd::once_flaggInitFlag;staticA&GetExtraCreator(){staticA*gExtraCreator;std::call_once(gInitFlag,[&](){gExtraCreator=newA;});return*gExtraCreator;}//File2.cppstaticboolgResistor=[](){A*obj_A=GetExtraCreator();returnfalse;}(); 不难看出,这是一个单例(饿汉...