【问题标题】:Critical section initialization when creating thread-safe singleton (C++)创建线程安全单例 (C++) 时的临界区初始化
【发布时间】:2010-06-02 06:44:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ multithreading singleton critical-section


    【解决方案1】:

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

    【讨论】:

    • 明白你在说什么。谢谢!
    【解决方案2】:

    使用 pthread_once() 可以在第一次使用之前初始化临界区。 Windows 有InitOnceExecuteOnce 功能。

    【讨论】:

    • 使用 boost(而不是 pthread_once() ),您可以使用像我在这个中所做的那样的解决方案:stackoverflow.com/questions/2955921/…
    • 如果你有pthread,你就不需要windows临界区
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2010-10-17
    • 2010-12-31
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多