Poco AsyncChannel не завершается при выходе из разветвленного процесса

Проблема:

Вызовите / инициализируйте код Poco из библиотеки C, используя загрузчик (сторонняя программа на C, наш код на c ++).

  1. Программа загружает нашу библиотеку, наша библиотека инициализирует Poco :: Logger и использует AsyncChannel + FileChannel в регистраторе.
  2. Вилка из этого процесса.
  3. Запустите несколько потоков в дочернем процессе.
  4. попытаться выйти из дочернего процесса, присоединяясь к потокам.
  5. Деструктор AsyncChannel блокирует метод close (), опрашивая очередь и спя.
  6. _Queue всегда имеет 1 элемент, когда вызывается деструктор для AsyncChannel, и я предполагаю, что это связано с тем, как родительский процесс выполняется и разветвляется.

Теперь вопрос: это проблема с gcc, что форкирование процесса не вызывает конструкторов, а просто дублирует память?
Я пытался вызвать _queue.clear () внутри AsyncChannel :: AsyncChannel (), но без результатов …

Кто-нибудь видел эту проблему раньше? любое предлагаемое решение?

0

Решение

Ответ здесь:

http://pocoproject.org/forum/viewtopic.php?f=10&т = 6378

Резюме: создавать темы после форка, а не до. Та же проблема с Poco :: Util :: Timer и другими классами также.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector