Я пишу некоторые библиотеки DLL (для Windows в MSVC ++ 2008), которые предоставляют некоторые функции в качестве сервера xmlrpc. Для реализации сервера xmlrpc я использую библиотеку xmlrpc-c.
Я могу запустить сервер xmlrpc несколькими способами. Более интересны:
- метод запуска - Это запустит сервер xmlrpc навсегда, поэтому dll не сможет контролировать, пока сервер не будет прерван.
- метод runOnce - это будет запускать сервер xmlrpc только для обработки одного RPC. И если нет запроса, он будет ждать этого.
Я не могу долго держать под контролем dll. Мне нужно обработать некоторые RPC и вернуть управление программе, которая использует dll. И обработайте следующие RPC, когда DLL снова вернется к управлению.
runOnce выглядит нормально. Но есть вероятность, что не будет RPC для обработки, и он будет ждать одного. Это недопустимо.
Существует также одно исключение:
runOnce прерывает ожидание
запрос на подключение и возврат
немедленно, если процесс получает
сигнал. Обратите внимание, что если у вас нет
обработчик для этого сигнала, сигнал
вероятно, убьет весь процесс,
поэтому установите обработчик сигнала - даже один
это ничего не делает - если вы хотите
использовать это. Но до Xmlrpc-c 1.06
(Июнь 2006 г.), сигналы не действуют -
нет способа заставить runOnce прервать
ожидание и возврат.
Могу ли я использовать его в качестве обходного пути и вернуть контроль над dll? Можно ли отправить сигнал от dll на себя? Как это работает на Windows?
Или, может быть, есть лучшее решение этой проблемы?