创建线程安全单例时的临界区初始化(C ++)

时间:2010-06-02 06:44:56

标签: c++ multithreading singleton critical-section

我正在尝试执行此解决方案中建议的相同操作:

How can I create a thread-safe singleton pattern in Windows?

但是,临界区应该在哪里初始化和未初始化?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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