Потокобезопасность 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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