单例同步C++

Dom*_*nix 2 c++ singleton design-patterns ipc

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

Jer*_*fin 7

C++ 98/03完全不支持线程.如果您正在使用C++ 98或03编译器,那么您几乎不得不使用Boost,或者某种(或多或少)特定于操作系统的东西,例如pthreads或Win32的线程原语.

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

然而,我觉得有必要指出,备份并做更多考虑是否需要/想要一个Singleton可能会更好.说实话,单身模式在很大程度上已经失宠了.

编辑:重读这个,我有点想跳过一件事:至少当我使用它们时,任何/所有单例都在任何辅助线程启动之前完全初始化.这引起了对初始化中线程安全性的关注,这完全没有实际意义.我想有可能是你开始之前辅助线程,所以你就需要解决这个问题,你不能初始化一个单身,但至少马上它给我的印象是相当不寻常的例外,我会处理的,只有当/如果绝对必要.