|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Запуск потоков по очереди
Добрый день, как бы бессмыслено не звучало, но мне нужно сделать запуск потоков по очереди. (их около 10)
Потоки создавал через file>new>other>thread object На форме кнопка с кодом: Код:
var p1:p1_pot; p2:p2_pot; begin repeat begin p1:=p1.Create(true); p1.FreeOnTerminate:=true; p1.Resume; p1.Priority:=tpnormal; end; begin p2:=p2.Create(true); p2.FreeOnTerminate:=true; p2.Resume; p2.Priority:=tpnormal; end; //и т.д. until stop=1; end; Так вот, как можно сделать, что бы при нажатии на кнопку запускался первый поток, после его завершения, запускался второй, после завершения второго - третий и т.д.? |
#2
|
||||
|
||||
WaitFor у TThread. FreeOnTerminate в false и удалять объект руками.
хотя в этом случае много потоков необязательно. можно все действия всех потоков выполнять в одном. тогда и очередь сама собой получится. Пишу программы за еду. __________________ |
#3
|
||||
|
||||
А можно в каждом потоке стартовать следующий перед завершением текущего. Хотя задача и правда бессмысленна по своей сути. В таких случаях куда менее накладно по ресурсам обработать в одном потоке.
jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
я когда-то делал очередь потоков, чтобы исполнять их именно по очереди.
Код:
type TThreadQueue = class(TObjectQueue) private FInProgress: Boolean; FCurrentThread: TThread; procedure OnThreadTerminate(Sender: TObject); public constructor Create; destructor Destroy; override; procedure ExecuteThreads; procedure TerminateCurrentThread; procedure TerminateAllThreads; property InProgress: Boolean read FInProgress; property CurrentThread: TThread read FCurrentThread; end; Flash, Flash, Hundred Yard Dash! Buddy, it's nice to see you. |
#5
|
||||
|
||||
sorry for offtop
Цитата:
Пишу программы за еду. __________________ |