AkaProc:Когда Вы запускаете отдельный поток, то Вы расчитываете, что в этом потоке выполнится какая-то отдельная задача. Нужно ли делать так, чтобы эта задача прерывалась на какой-то стадии, при этом непонятно, что сделано, а что нет? Думаю, что не нужно. Отсюда вывод - поток - это не мультимедиа-плейер, который захотел запустил, захотел - остановил, поток - эта какая-то вполне определённая отдельная задача (например, форматирование диска С:
), которую если запускать в рамках основного потока приложения, то она будет это приложение тормозить, а если запускать её в отдельном потоке, то Вы получите реальную многозадачность. Вот из этого критерия и исходите, когда планируете завести отдельный поток. Т.е. поток сам по себе не имеет никакой ценности, так же как Вы купили себе BMW, поставили его на стоянку и ничего с ним не делаете.
Согласитесь, это бессмыслица. В отдельном потоке всегда выполняется какая-то вполне определённая задача, поэтому запуск и остановка потока должны происходить исключительно в логическом контенте этой задачи.
Ещё как пример. Построили Вы у себя на даче теплицу и назвали её "MyThread".
Она Вам нужна просто так, отдельно стоящая? Явно нет. Открываете Вы её, потом закрываете - никакой практической пользы в этом не будет. А вот когда Вы высадите в эту теплицу рассаду помидоров, вот тогда работа с теплицей "MyThread" приобретает реальный практический смысл - днём Вы её открываете, чтобы туда попадал солнечный свет и помидоры хорошо росли, вечером закрываете, чтобы из теплицы ночью не уходило тепло и т.д. Понимаете теперь зачем нужны потоки?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)