gpt4 book ai didi

c++ - 单例同步 C++

转载 作者:搜寻专家 更新时间:2023-10-31 00:01:27 24 4
gpt4 key购买 nike

如果我必须用 C++ 编写单例类,我将使用静态变量、私有(private)构造函数和返回类对象的公共(public)静态函数。但是在多线程环境中,代码会有问题。为了避免多个线程同时访问同一个变量,Boost线程是用于同步的最佳机制吗?我的意思是在资源中设置/取消设置锁/互斥锁。 C++ 标准库中是否还有其他内置的东西,我不必下载 boost、构建东西等?我听说过 C++ Ox,但了解不多。

最佳答案

C++98/03 根本不支持线程。如果您使用的是 C++98 或 03 编译器,那么您几乎只能使用 Boost 或某些(或多或少)特定于操作系统的东西,例如 pthreads 或 Win32 的线程原语。

C++11 有一个相当完整的线程支持库,有互斥锁、锁、线程本地存储等。

但是,我觉得有必要指出,最好先备份并多考虑一下您是否需要/想要一个单例。说得好听一点,单例模式在很大程度上已经失宠了。

编辑:重读这篇文章,我有点跳过了我想说的一件事:至少当我使用它们时,任何/所有单例都在任何辅助线程启动之前完全初始化。这使得对其初始化中的线程安全性的担忧完全没有意义。我想在启动辅助线程之前可能有一个你无法初始化的单例,所以你需要处理这个问题,但至少马上它让我觉得这是一个相当不寻常的异常,我只会在/如果绝对必要。

关于c++ - 单例同步 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10024834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com