Вниз
Скачать: CL | DM;

Пауза в TThread   Найти похожие ветки 

 
Fktrc   (2004-08-22 09:26) [0]

Насколько я знаю, в поточной функции не рекомендуется использовать Sleep (например вот так)
procedure TMyThread.Execute;
begin
 repeat
    Sleep (...);
    ...
 until Terminated;
end;

Как тогда правильно организовать паузу в потоке?


 
TUser ©   (2004-08-22 11:37) [1]

Кем не рекомендуется? И почему? Нормальный вызов, более того, в правильно написанном потоке д.б. sleep"ы. Тут кто-то недавно спрашивал, почему поток грузит процессор на 100% :)


 
Mim1 ©   (2004-08-22 12:00) [2]

Если вам нужна периодичность то нормально. ОДнако если вы проверяете в каждой из итераций какое то событие (например изменение какого то параметра), следует воспольщоваться средствапи синхронизации (критические секции, симафоры, мютексы, и т.д.).


 
Fktrc   (2004-08-22 12:10) [3]

А вот кем
http://delphimaster.net/view/1-1092888489/
там ответы Erik1 и Digitman, только я смысла кода Erik1 не понял


 
False_Delirium ©   (2004-08-22 16:58) [4]

Что значит "организовать паузу в потоке"  ..?..
Заставить его не реагировать ни на что извне, команды, события, сообщения? Зачем?


 
jack128 ©   (2004-08-22 17:16) [5]


> там ответы 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;


 
TUser ©   (2004-08-22 19:01) [6]

Ты случайно не посчитал, сколько там постов от Digitman"а?


 
y-soft ©   (2004-08-22 19:38) [7]

>Fktrc   (22.08.04 09:26)
 
Насколько я знаю, в поточной функции не рекомендуется использовать Sleep

Странные у Вас сведения. Скорее не рекомендуется применять бездумно - ну, так такую рекомендацию можно отнести к чему угодно :)

Конечно, ожно использовать функции ожидания, но это отнюдь не всегда возможно, а иногда даже и неоправданно...


 
Fktrc   (2004-08-23 06:16) [8]

2 jack128
Спасибо, вроде дошло. Почитаю еще хелп по WaitForSingleObject и Events, но проблем не предвидится.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
4-1090585996
_PG_
2004-07-23 16:33
2004.09.05
Получение некоторых данных из запущенной программы


3-1092304333
User2
2004-08-12 13:52
2004.09.05
IDENTITY


3-1092136720
zorik
2004-08-10 15:18
2004.09.05
Udf


6-1088778533
Прог
2004-07-02 18:28
2004.09.05
Работа с почтой по pop3


3-1092051061
Aleksandr.
2004-08-09 15:31
2004.09.05
Как узнать реальное число записей в TSQLDataSet?




   Наверх