как перезапустить поток в vc ++, я создал его с помощью CreateThread - PullRequest
1 голос
/ 26 августа 2009

Я использую vc ++ и создаю поток с помощью функции CreateThread. Могу ли я перезапустить его снова, как только он вернется после выполнения своей задачи.

Ответы [ 3 ]

5 голосов
/ 26 августа 2009

Вы не можете перезапустить завершенную тему. Тем не менее, вы, безусловно, можете запустить новый поток с той же функцией для запуска, снова с CreateThread.

4 голосов
/ 26 августа 2009

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

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

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

В качестве примечания, пул потоков также поддерживается и настоятельно рекомендуется в .NET Framework.

0 голосов
/ 26 августа 2009

Конечно, это звучит как цикл внутри потока, а не перезапуск.

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