如何解决在多线程代码中使用的C ++ Singleton可能发生什么情况,以及如何解决该问题?
const AppConfig& AppConfig::Singleton()
{
static AppConfig appConfig{ configPath_ };
return appConfig;
}
首先,它每次都会正确初始化(我有断点来检查它),并通过以下方式从多个线程中多次调用它:
auto& a = utils::AppConfig::Singleton();
或
utils::AppConfig::Singleton().member
基本上,它使用以下答案中的实现:https://stackoverflow.com/a/1008289/1423254,我个人曾多次使用它,并认为它是线程安全的,应遵循:https://stackoverflow.com/a/1661564/1423254。
该代码可用于生产环境,但不能在我的笔记本电脑上本地运行,在返回的配置中经常会有一些垃圾:
那里发生了什么以及如何解决它,这样我就不会得到那些垃圾数据?
我什至尝试在整个Singleton
函数体内放置一个锁,但没有帮助。
我们使用64bit GCC 7.5.0
进行编译。
编辑:我应该补充一点,多个线程正确地调用Singleton
函数,仅1个单独的线程就存在问题,有时会返回垃圾。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。