2014-11-14 8 views
2

Я довольно новичок в многопоточности C++. У меня есть следующий поток кода:C++ boost threading issue

Главная тема:

  • Создает очередь
  • Создает второй поток
  • добавляет элементы в очереди
  • кончается

Второй Тема:

  • Если в очереди есть элементы, выдает их.
    (второй поток выходит, когда флаг установлен для выхода).

Проблема в том, что когда основная функция завершает добавление предметов в очередь, она останавливается. Добавление .join() после создания второго потока просто заставит его бесконечно висеть.

Может ли кто-нибудь описать способ справиться с этим?

+2

Предоставьте [mcve] (http://stackoverflow.com/help/mcve). – 0x499602D2

+0

Как вы, кажется, настроили _ «вторичный фронт» _ потоков, вы должны «присоединиться» к этим первым. –

ответ

2

Кажется, вторая нить не видящий флаг 'exit'.

Обязательно синхронизируйте доступ к нему или сделайте его atomic_bool, например.