Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пауза в 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% :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо