Потокобезопасность std::vector push_back и резервC++

Программы на C++. Форум разработчиков
Anonymous
Потокобезопасность std::vector push_back и резерв

Сообщение Anonymous »

У меня есть приложение, которое непрерывно помещает элементы std::vector::push_back в вектор. Поскольку это система реального времени, я не могу позволить, чтобы она остановилась в любой момент. К сожалению, когда зарезервированная память исчерпана, автоматическое выделение памяти push_back вызывает зависания (по моим измерениям, до 800 мс).

Я решил эту проблему, создав второй поток, который отслеживает наличие доступной памяти и вызывает std::vector:: зарезервируйте при необходимости.


Мой вопрос: безопасно ли одновременно выполнять резерв и push_back?


(очевидно, при условии, что push_back не будет перераспределять память)

Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/232 ... nd-reserve

Вернуться в «C++»