Какой метод лучше? Позволить потоку поспать какое-то время или удалить его и создать заново позже? - PullRequest
6 голосов
/ 04 декабря 2008

У нас есть процесс, который должен запускаться каждые два часа. Это процесс, который должен выполняться в собственном потоке, чтобы не прерывать нормальную обработку.

Когда он запустится, он загрузит 100 тыс. Записей и проверит их по базе данных. Среда для выполнения этого имеет множество объектов, управляющих этим процессом. Эти объекты должны присутствовать только во время работы процесса.

Какой стандарт лучше?

  1. Держите поток в режиме ожидания, позволяя ему спать, пока он мне снова не понадобится. Или,

  2. Удалить, когда это будет сделано, и создать его в следующий раз, когда мне это понадобится? (События системного таймера.)

Ответы [ 13 ]

0 голосов
/ 04 декабря 2008

Не думаю, что это очень важно, но подход best очень зависит от платформы.

.NET System.Threading.Timer ничего не стоит во время ожидания и вызовет ваш код в потоке пула. Теоретически, это было бы лучшим из ваших предложений.

0 голосов
/ 04 декабря 2008

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

0 голосов
/ 04 декабря 2008

Я думаю, это просто вопрос вкуса. Оба хорошие. Используйте тот, который вы найдете проще для реализации. :)

...