Xan*_*unn 0 c++ thread-safety atomicity
std::pair<Object, OtherObject*> currentData;
void OnCallback()
{
Object object = getObject();
OtherObject* otherObject = new OtherObject();
currentData = std::make_pair(object, otherObject);
}
Run Code Online (Sandbox Code Playgroud)
是make_pair原子?将make_pair字段从其返回值复制或移动到currentData?如果我有另一个线程访问该值currentData,那么访问它时是否有任何潜在currentData的价值不完整?
不幸的是,我没有在标准文档中看到任何相关信息make_pair.
是否make_pair()原子是无关紧要的.
如果我有另一个线程访问currentData的值,那么当访问时,currentData的值是否有可能不完整?
这里唯一的问题是std::pair赋值运算符是否是原子的,因为这决定了赋值操作是否是线程安全的.在任务发生之前发生了什么,以及所分配的价值是如何形成的,与任务操作的原子性完全无关.
此赋值操作不是原子操作,并且不是线程安全的.
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |