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
Оператор присваивания является атомарным, поскольку именно это определяет, является ли операция присваивания поточно-ориентированной или нет. То, что произошло до того, как произошло присвоение, и как появилось назначаемое значение, не имеет абсолютно никакого отношения к атомарности операции назначения.
Эта операция присваивания не является атомарной и не является поточно-ориентированной.
Других решений пока нет …