Является ли make_pair атомарным?

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.

0

Решение

Будь то make_pair() является или не является атомарным, не имеет значения.

Если у меня есть другой поток доступа к значению currentData, есть ли
любой потенциал, что значение currentData будет неполным, когда это
доступ?

Единственный вопрос здесь заключается в том, std::pairОператор присваивания является атомарным, поскольку именно это определяет, является ли операция присваивания поточно-ориентированной или нет. То, что произошло до того, как произошло присвоение, и как появилось назначаемое значение, не имеет абсолютно никакого отношения к атомарности операции назначения.

Эта операция присваивания не является атомарной и не является поточно-ориентированной.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector