Как я могу убедиться, что все мои потоки с ++ boost заканчиваются до выхода из программы? - PullRequest
1 голос
/ 17 октября 2010

Я знаю, что могу вызвать thread.join (), чтобы принудительно завершить поток, прежде чем текущий поток сможет продолжить. Однако в моей программе есть куча файлов, которые считываются в память, модифицируются и затем записываются на диск. Каждый сброс выполняется в отдельном потоке, так что текущий поток может продолжаться, пока содержимое записывается на диск.

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

Есть ли способ присоединиться ко всем активным потокам перед продолжением и выходом из основного потока?

1 Ответ

4 голосов
/ 17 октября 2010

Если потоки завершают выполнение, они больше не являются потоками.Я не вижу твоего беспокойства.Я бы, например, рассмотреть вопрос об использовании пула потоков.Если вы хотите сохранить список всех порожденных тем, используйте boost::thread_group.Присоединение к всем потокам по сути и по сути равнозначно присоединению ко всем активным потокам, поскольку соединение в Not-A-Thread возвращается немедленно.НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...