Завершить потоки в пуле потоков PPL - PullRequest
0 голосов
/ 31 января 2019

Библиотека PPL от Microsoft содержит мощные концепции распараллеливания и реализует их с помощью пула потоков, поэтому новые потоки обычно не создаются при выполнении задач PPL.Однако, похоже, нет способа явно остановить потоки в пуле потоков.

Причина, по которой я хочу явно остановить потоки, заключается в Qt.Некоторые методы Qt хранят информацию в выделенном экземпляре класса, а указатель на этот экземпляр класса хранится в локальном потоке.Эта память очищается только в том случае, если потоки корректно остановлены.Если нет, Qt не может очистить эту выделенную память.

Комбинирование PPL с Qt подразумевает, что эта память не освобождается должным образом при выходе, что само по себе не является проблемой, но, к сожалению, эта нераспределенная память сообщается какутечка памяти нашей библиотекой выделения памяти (см. Кто-нибудь использует valgrind и Qt? для аналогичной проблемы).

Мы заметили, что если мы создаем потоки самостоятельно (поэтому не используем поток PPLбассейн), утечек нет.Если мы используем PPL, сообщается об утечках.

Итак, вопрос: есть ли способ явно остановить потоки в пуле потоков PPL?

...