Я должен создать функцию, которая добавляет значение к вектору и возвращает индекс значения, которое было просто добавлено.
Пример:
int append(std::vector<int>& numbers, int number){
int retval = numbers.size();
// what if some other thread calls push_back(number) in between these calls?
numbers.push_back(number);
return retval;
}
Я хотел бы сделать это атомарно так, чтобы возвращенный индекс был всегда корректен, даже когда может быть несколько потоков, добавляющих значения к вектору. Это было бы легко если push_back
возвращенный индекс объекта, просто добавленного. Как я могу гарантировать, что корректный индекс возвращается?