У меня есть приложение C ++, которое обрабатывает сетевые пакеты с высокой скоростью передачи данных.
Это приложение имеет различные структуры данных (карты / списки STL и т. Д.), Поддерживающие состояние приложения. Эти структуры данных часто обновляются.
Входные данные для этого приложения подвержены ошибкам, что делает его уязвимым для сбоев.
Я хочу сохранить состояние приложения (различные структуры данных) на постоянном носителе, чтобы восстановить его после сбоя.
Есть ли какие-либо рамки / библиотеки / практики, которые могут помочь мне в достижении того же.
Просьба не направлять этот поток на «устранение уязвимости к сбоям».
Вы должны взглянуть на Перезагрузка и восстановление фреймворка рецепт от Кейт Грегори. Это видео, которое объясняет, как использовать эту стратегию. Кроме того, взгляните на Восстановление приложений и перезагрузка для справки. Я использовал и изменил этот рецепт, и он работает безупречно.
относительно
Входные данные для этого приложения подвержены ошибкам, что делает его уязвимым для сбоев
Нет, ввод никогда не должен вызывать сбой приложения*. Это не вход, который подвержен ошибкам. Это приложение.
Единственное, что вы можете сделать, если вы действительно хотите, чтобы информация сохранялась, это сохранить ее в первую очередь, до каждая авария.
Предсказатель аварий может, конечно, пригодиться для этого.
Но общее понятие просто: сохраняйте то, что вам нужно сохранить, прежде чем сбой сделает это практически невозможным.
В разбитом состоянии вы не может полагаться ни на что внутри приложения.
Сохранение информации в этом состоянии, по крайней мере, потребует обширной проверки в момент использования этой сохраненной информации.
Короче,
Лучше всего исправить ошибки, но
в противном случае, в качестве временной меры вы можете сохранить информацию, когда она станет доступной (до вылетает) но потом
с целью переосмысления всего Шебанга с нуля, который я рекомендую.
*Конечно, если это не определено для этого.