Между этими двумя решениями нет большой разницы. Я предпочитаю тот, где поток создается каждый раз.
Поток, лежащий вокруг , потребляет ресурсы (по крайней мере, память). На языке сборки мусора может быть легко сохранить какой-либо объект в этом потоке, тем самым используя еще больше памяти. Если вы не располагаете поток, все ресурсы освобождаются и становятся доступными для основного процесса в течение двух часов.
Если вы хотите остановить весь процесс, где ваш поток может выполняться или нет, вам нужно аккуратно прервать поток . Всегда трудно прервать поток или узнать, спит он или работает. У вас могут быть некоторые условия гонки. Запуск потока по требованию освобождает вас от этих потенциальных проблем: вы знаете, если вы запустили поток, и в этом случае вызов thread_join
заставляет вас ждать, пока поток не будет завершен.
По этим причинам Я бы выбрал решение для потока по требованию , хотя у другого нет непреодолимых проблем.