std::pair<Object, OtherObject*> currentData;

void OnCallback()
{
    Object object = getObject();
    OtherObject* otherObject = new OtherObject();
    currentData = std::make_pair(object, otherObject);
}


make_pair是原子的吗? make_pair是否将字段从其返回值复制或移动到currentData?如果我有另一个线程访问currentData的值,访问currentData的值是否有可能不完整?

不幸的是,我没有在make_pair的标准文档中看到任何相关信息。

最佳答案

make_pair()是否为原子无关紧要。


  如果我还有另一个线程访问currentData的值,是否有
  当currentData的值
  访问?


这里唯一的问题是std::pair的赋值运算符是否是原子的,因为这是确定赋值操作是否是线程安全的。赋值发生之前发生的事情以及赋值的方式如何存在,与赋值操作的原子性绝对无关。

此分配操作不是原子的,也不是线程安全的。

关于c++ - make_pair是原子的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36993512/

10-15 06:03