![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пауза в TThread [D5, Win2k]
Fktrc © (2004-08-22 09:26:00)Насколько я знаю, в поточной функции не рекомендуется использовать Sleep (например вот так)
procedure TMyThread.Execute;
begin
repeat
Sleep (...);
...
until Terminated;
end;
Как тогда правильно организовать паузу в потоке?
Fktrc (2004-08-23 06:16:00) [1]2 jack128
Спасибо, вроде дошло. Почитаю еще хелп по WaitForSingleObject и Events, но проблем не предвидится.
y-soft (2004-08-22 19:38:00) [2]>Fktrc (22.08.04 09:26)
Насколько я знаю, в поточной функции не рекомендуется использовать Sleep
Странные у Вас сведения. Скорее не рекомендуется применять бездумно - ну, так такую рекомендацию можно отнести к чему угодно :)
Конечно, ожно использовать функции ожидания, но это отнюдь не всегда возможно, а иногда даже и неоправданно...
TUser (2004-08-22 19:01:00) [3]Ты случайно не посчитал, сколько там постов от Digitman'а?
jack128 (2004-08-22 17:16:00) [4]
> там ответы Erik1 и Digitman, только
Смотря на какое время у тя должен засыпать поток.. Если Sleep(1) то можно потерпеть, а если Sleep(100000), то лудше что нить типа этого..
procedure TMyThread.Execute();
begin
while not Terminated do
begin
// StopEvent - Event, сигнализирующий о необходимости завершить поток...
if WaitForSingleObject(StopEvent, 100000) = WAIT_TIMEOUT then
begin
// Выполняешь что те нужно делать..
end
else
Exit;
end;
end;
False_Delirium (2004-08-22 16:58:00) [5]Что значит "организовать паузу в потоке" ..?..
Заставить его не реагировать ни на что извне, команды, события, сообщения? Зачем?
Fktrc (2004-08-22 12:10:00) [6]А вот кем
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092888489&n=0&p=1
там ответы Erik1 и Digitman, только я смысла кода Erik1 не понял
Mim1 (2004-08-22 12:00:00) [7]Если вам нужна периодичность то нормально. ОДнако если вы проверяете в каждой из итераций какое то событие (например изменение какого то параметра), следует воспольщоваться средствапи синхронизации (критические секции, симафоры, мютексы, и т.д.).
TUser (2004-08-22 11:37:00) [8]Кем не рекомендуется? И почему? Нормальный вызов, более того, в правильно написанном потоке д.б. sleep'ы. Тут кто-то недавно спрашивал, почему поток грузит процессор на 100% :)