C++ 创建线程安全单例(C+;+;)时的关键节初始化

C++ 创建线程安全单例(C+;+;)时的关键节初始化,c++,multithreading,singleton,critical-section,C++,Multithreading,Singleton,Critical Section,我正在尝试做与此解决方案中建议的相同的事情: 但是,关键部分应该在哪里初始化和取消初始化?将关键部分包装到一个类中(使用现成的或自己制作的),并声明该类的全局变量-然后在程序启动期间初始化关键部分,并在程序退出时取消初始化。由于启动和退出是在一个线程上完成的,因此它将可靠地工作。使用pthread_once(),您可以在第一次使用它之前初始化关键部分。Windows有功能。明白你的意思。谢谢有了boost(而不是pthread_once()),您可以像我在本文中所做的那样使用一个解决方案:如果

我正在尝试做与此解决方案中建议的相同的事情:


但是,关键部分应该在哪里初始化和取消初始化?

将关键部分包装到一个类中(使用现成的或自己制作的),并声明该类的全局变量-然后在程序启动期间初始化关键部分,并在程序退出时取消初始化。由于启动和退出是在一个线程上完成的,因此它将可靠地工作。

使用pthread_once(),您可以在第一次使用它之前初始化关键部分。Windows有功能。

明白你的意思。谢谢有了boost(而不是pthread_once()),您可以像我在本文中所做的那样使用一个解决方案:如果您有pthread,就不需要windows关键部分