相关疑难解决方法(0)

并发:C++ 11内存模型中的原子和易失性

全局变量在2个不同核心上的2个并发运行线程之间共享.线程写入和读取变量.对于原子变量,一个线程可以读取过时值吗?每个核心可能在其缓存中具有共享变量的值,并且当一个线程在缓存中写入其副本时,不同核心上的另一个线程可能从其自己的缓存中读取过时值.或者编译器执行强大的内存排序以从其他缓存中读取最新值?c ++ 11标准库具有std :: atomic支持.这与volatile关键字有何不同?在上述场景中,volatile和atomic类型的行为方式有何不同?

c++ parallel-processing concurrency multithreading c++11

55
推荐指数
4
解决办法
3万
查看次数

你什么时候使用C++'mutable'关键字?

你什么时候使用C++ mutable关键字?为什么?我认为我不必使用该关键字.我知道它用于诸如缓存(或者可能是记忆)之类的东西,但是你需要在什么类和条件下使用它呢?

c++

30
推荐指数
6
解决办法
1万
查看次数

21
推荐指数
2
解决办法
8002
查看次数

C++ - 当应用于方法时,volatile表示什么?

如果我有一个C++方法声明如下:

class A
{
public:
   double getPrice() volatile;
};
Run Code Online (Sandbox Code Playgroud)
  1. volatile这里有什么代表?
  2. 它可以用于什么?

您可能会感兴趣的这种由安德烈Alexandrescu的多布斯博士的文章.我曾是 :)

编辑: 那篇文章写了一段时间,现在似乎社区已经开始了.香草萨特有这说这个.谢谢Iain(和Herb!)

mlimber他指出,Andrei在这里有一篇后续文章,他继续提倡使用不稳定的正确性作为检测支持POSIX类互斥体的系统上的竞争条件的有用工具.

c++ volatile

21
推荐指数
3
解决办法
6359
查看次数

C++ 可变说明符

什么时候可以,什么时候不能调用可变变量?

int/float/bool 值非常清楚。但是,比方说,数组呢?mutable如果我要向它添加元素,我可以调用 native array吗?与std::vector.

再举一个例子。我有对象 A,它保持对另一个对象 B 的引用 (B & b)。对象 B 有我将重新分配的本机数组/ std::vector (我认为在这种特殊情况下是类似的)。伪代码:

struct B{
   std::vector<int> arr;
   // int *arr;              //Or this
   void changeArr(){
     arr.push_back(90);
   }
}

struct A{
   A(B &b) : b(b){};
   mutable B &b;     // is it ok to have it "mutable"?
   //mutable B b;    // or even this?
   void fire() const{
      b.arr.push_back(125);
      // Or 
      b.changeArr();
   }
}
Run Code Online (Sandbox Code Playgroud)

我可以调用B &b可变的吗?


更新

根据http://en.cppreference.com/w/cpp/language/cv

可变 - 定义类的成员不影响类的外部可见状态。

这是什么externally …

c++ mutable

1
推荐指数
1
解决办法
2640
查看次数