У меня есть приложение, которое непрерывно помещает элементы std::vector::push_back в вектор. Поскольку это система реального времени, я не могу позволить, чтобы она остановилась в любой момент. К сожалению, когда зарезервированная память исчерпана, автоматическое выделение памяти push_back вызывает зависания (по моим измерениям, до 800 мс).
Я решил эту проблему, создав второй поток, который отслеживает наличие доступной памяти и вызывает std::vector:: зарезервируйте при необходимости.
Мой вопрос: безопасно ли одновременно выполнять резерв и push_back?
(очевидно, при условии, что push_back не будет перераспределять память)
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/232 ... nd-reserve