Информация об изменениях

Сообщение Re: Передать ошибку "наверх" из многопоточнй библиотеки от 23.10.2016 12:28

Изменено 23.10.2016 12:55 Evgeny.Panasyuk

Здравствуйте, AlexGin, Вы писали:

AG>Я и моя команда разрабатываем библиотеку классов, которая выполняет обработку данных.

AG>Эта обработка — многопоточная.
AG>OS — Windows 7 / 64 + SP1.
AG>Заказчик настаивает, на варианте, когда в случае ошибки ему будут поступать exception-s.

Какого типа обработка? Параллельная или конкурентная?
Главный поток ждёт результата или продолжает работать переодически проверяя сообщения? Какое вообще взаимодействие их кодом?

Как уже выше сказали, нужно перехватывать исключения и передавать в другой поток через exception_ptr.
Если подходят promise + future — то там вся передача уже реализована, смотри std/boost::promise::set_exception.

AG>ПРИМЕЧАНИЕ:

AG>Мы все пишем на MSVC-2015, однако Заказчик настаивает только на применении стандарта C++03
AG>В то же время, мы широко используем boost и STL.
AG>С этими библиотеками Заказчик хорошо знаком.

В Boost для C++03 есть и exception_ptr, и promise+future.
Re: Передать ошибку "наверх" из многопоточнй библиотеки
Здравствуйте, AlexGin, Вы писали:

AG>Я и моя команда разрабатываем библиотеку классов, которая выполняет обработку данных.

AG>Эта обработка — многопоточная.
AG>OS — Windows 7 / 64 + SP1.
AG>Заказчик настаивает, на варианте, когда в случае ошибки ему будут поступать exception-s.

Какого типа обработка? Параллельная или конкурентная?
Главный поток ждёт результата или продолжает работать переодически проверяя сообщения? Какое вообще взаимодействие с их кодом?

Как уже выше сказали, нужно перехватывать исключения и передавать в другой поток через exception_ptr.
Если подходят promise + future — то там вся передача уже реализована, смотри std/boost::promise::set_exception.

AG>ПРИМЕЧАНИЕ:

AG>Мы все пишем на MSVC-2015, однако Заказчик настаивает только на применении стандарта C++03
AG>В то же время, мы широко используем boost и STL.
AG>С этими библиотеками Заказчик хорошо знаком.

В Boost для C++03 есть и exception_ptr, и promise+future.