单例应用程序与矢量成员

时间:2015-01-28 11:46:00

标签: c++ c++11 singleton compiler-optimization race-condition

我有一个Singleton应用程序服务器(假设正确创建)。服务器类有一个非静态向量成员,可以通过多种方法进行修改。编译器是否可能优化代码,以便在多个请求处理方法链中非串行地修改向量。我的意思是两个方法调用链可以跨越不同的请求吗? 我认为他们可以,因为方法调用会跳转到标签。

1 个答案:

答案 0 :(得分:0)

好的,看到你的评论我发布了一个答案,因为有些事情需要明确:标准容器“线程安全”。

他们提供一些保护和保证,例如您可以安全地拥有多个读者这一事实。 但是不能同时拥有多个作家或作家和读者。

关于你的问题:编译器无罪。 鉴于你的评论,我想你有std :: vector的conccurent写入和读取,这是你现在遇到问题的地方。 只需添加一个互斥锁,并检查性能是否太可怕。如果它正在寻找另一个数据结构/架构。