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

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

Изменено 23.10.2016 10:17 AlexGin

Доброе время суток, уважаемые коллеги!

Я и моя команда разрабатываем библиотеку классов, которая выполняет обработку данных.
Эта обработка — многопоточная.
OS — Windows 7 / 64 + SP1.

Заказчик настаивает, на варианте, когда в случае ошибки ему будут поступать exception-s.
Мне, конечно же, несложно выполнить throw, однако при этом во "внешнем" (головном) потоке исключения на будет.

Пока мы планируем ввести глобальный флаг (скорее даже Event), который устанавливаем при ошибке.
Далее, код, выполняемый в головном потоке "на нашей стороне" будет сканировать этот Event (с прокачкой windows-messages) и там уже,
если имела место проблема, выполнять throw...

В то же время, я чувствую, что есть более удачные варианты (без глобальных переменных)...

ПРИМЕЧАНИЕ:
Мы все пишем на MSVC-2015, однако Заказчик настаивает только на применении стандарта C++03
В то же время, мы широко используем boost и STL.
С этими библиотеками Заказчик хорошо знаком.

Заранее благодарю, за любые соображения по данному вопросу!
Доброе время суток, уважаемые коллеги!

Я и моя команда разрабатываем библиотеку классов, которая выполняет обработку данных.
Эта обработка — многопоточная.
OS — Windows 7 / 64 + SP1.

Заказчик настаивает, на варианте, когда в случае ошибки ему будут поступать exception-s.
Мне, конечно же, несложно выполнить throw, однако при этом во "внешнем" (головном) потоке исключения на будет.

Пока мы планируем ввести глобальный флаг (скорее даже Event), который устанавливаем при ошибке.
Далее, код, выполняемый в головном потоке "на нашей стороне" будет сканировать этот Event (с прокачкой windows-messages) и там уже,
если имела место проблема, выполнять throw...

В то же время, я чувствую, что есть более удачные варианты (без глобальных или статических переменных)...

ПРИМЕЧАНИЕ:
Мы все пишем на MSVC-2015, однако Заказчик настаивает только на применении стандарта C++03
В то же время, мы широко используем boost и STL.
С этими библиотеками Заказчик хорошо знаком.

Заранее благодарю, за любые соображения по данному вопросу!