powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поток и sleep?
37 сообщений из 37, показаны все 2 страниц
Поток и sleep?
    #33557203
Пускаю поток. В цикле делаю sleep(randomrange(1,10)).
Поток будет независимо от таймера идти дальше или будет ожидать?
Если он йдет независимо мне на время sleep поток остановить а потом возобновить?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33557217
Гость77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
API WaitForSingleObject
...
Рейтинг: 0 / 0
Поток и sleep?
    #33557487
Andrejs Sibircevs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Остановить - Suspend.
Запустить - Resume.
Help по TThread
...
Рейтинг: 0 / 0
Поток и sleep?
    #33557665
Ярослав Татаренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем ЛебедевПускаю поток. В цикле делаю sleep(randomrange(1,10)).
Поток будет независимо от таймера идти дальше или будет ожидать?
Если он йдет независимо мне на время sleep поток остановить а потом возобновить?
Уважаемый господин Лебедев, постарайтесь грамотно описать на русском языке свой вопрос (или проблему). То, что написали Вы - я бы охарактеризовал как набор слов, слабо связанных по смыслу и содержанию.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33557868
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тебе пауза нужна в потоке или его полная остановка
...
Рейтинг: 0 / 0
Поток и sleep?
    #33557870
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и желательно код того цикла и в каком потоке цикл?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559412
palyи желательно код того цикла и в каком потоке цикл?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  i:= 0 ;
   while  i<= FString_List.Count- 1   do 
   begin 
    r:= FString_List.Strings;
    analysis(r, 1 );
     [i]//=========== Если таймер true значит запускаем === 
     if  F_TIMER  then 
     begin 
      t:=  1000 *random_(F_START, F_STOP);
      Sleep(t);
     end ;

    F_Percent_Done:= progress_(i,FString_List.Count- 1 );

    Synchronize(display_percent_done);
    inc(i)
   End ;

Вот код.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559416
Ярослав Татаренко Артем ЛебедевПускаю поток. В цикле делаю sleep(randomrange(1,10)).
Поток будет независимо от таймера идти дальше или будет ожидать?
Если он йдет независимо мне на время sleep поток остановить а потом возобновить?
Уважаемый господин Лебедев, постарайтесь грамотно описать на русском языке свой вопрос (или проблему). То, что написали Вы - я бы охарактеризовал как набор слов, слабо связанных по смыслу и содержанию.
А что непонятного. Запускаю поток. Выполняю процедуру в потоке, где мне необходимо приостанавливать поток, а через некоторое время (random) снова возобновлять.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559417
И вопрос: Это грамотно sleep использовать в этом случае?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559435
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет !

Не вдаваясь, в специфику задачи.

Вызывающий Win32 API процедуру Sleep поток, с момента вызова на указанное время будет исключен планировщиком задач из исполнения. Если потоку необходимо сделать паузу, то это правильный вызов. Если же необходимо еще и отреагировать на событие, то надо смотреть в сторону WaitForXXXX процедур.

Удачи,
Дмитрий
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559447
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry ArefievПривет !

Не вдаваясь, в специфику задачи.

Вызывающий Win32 API процедуру Sleep поток, с момента вызова на указанное время будет исключен планировщиком задач из исполнения. Если потоку необходимо сделать паузу, то это правильный вызов. Если же необходимо еще и отреагировать на событие, то надо смотреть в сторону WaitForXXXX процедур.

Удачи,
Дмитрий
в интервале от 0 до 9 милисекунд нет смысла реагировать на события
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559456
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думаю что использовать слип в этом случае вполне нормально сам так делал
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559460
zubbitto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palyдумаю что использовать слип в этом случае вполне нормально сам так делал
беда только в том, что окошки не ОСРВ
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559462
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя если интервал в sleep довольно большой то лучше это сделать в цикле с Application.ProcessMessage и sleep(маленькие интервалы)
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559466
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zubbitto palyдумаю что использовать слип в этом случае вполне нормально сам так делал
беда только в том, что окошки не ОСРВ
не VCL поток
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559473
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОСРВ? это что значит?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559477
zubbitto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palyОСРВ? это что значит? операционная система реального времени, с гарантированным временем реакции на любое прерывание
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559481
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо понял
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559490
palyхотя если интервал в sleep довольно большой то лучше это сделать в цикле с Application.ProcessMessage и sleep(маленькие интервалы)

Интервалы от 1 до 120 секунд. Разбить на несколько и в цикле с Application.ProcessMessage?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559498
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если нужно чтобы твой поток реагировал ра сообщения в этом интервали времени то да тока не знаю как ты будешь разбивать случайный промежуток времени на части
если ты хочешь его просто преостановить suspend то думаю смысла нет
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559501
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя разбить тоже просто
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559520
Lebedev_artem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
palyхотя разбить тоже просто
Т.е. мой алгоритм вполне можно оставить без изменений?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559524
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я же говорю если интервал короткий то нет смысла, если довольно большой и нужно в это время реагировать на события из вне например проверять свойство terminated то на мой взгляд лучше цикл
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559526
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
интервал более 10 секунд я думаю лучше делить так как пользователь может захотеть выйти из проги
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559550
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palyнапример проверять свойство terminated то на мой взгляд лучше цикл
А может быть "сказать" потоку, что у него Terminated=True, при помощи установки события в активное состояние ? Фриды всего мира, делитесь вашими квантами с другими :)
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559565
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Arefiev palyнапример проверять свойство terminated то на мой взгляд лучше цикл
А может быть "сказать" потоку, что у него Terminated=True, при помощи установки события в активное состояние ? Фриды всего мира, делитесь вашими квантами с другими :)
поделись как?
...
Рейтинг: 0 / 0
Поток и sleep?
    #33559578
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palyподелись как?
Вариаций вагон в зависимости от задачи. Но, примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 procedure  TMyThread.Execute;
 begin 
   while  True  do   begin 
     case  WaitForXXXX(...FEvent....)  of 
      WAIT_OBJECT_0+X: 
         if  Terminated  then 
          Break
         else 
          ......
     end ;
   end ;
 end ;

 procedure  TMyThread.StopThread;
 begin 
  Terminate;
  SetEvent(FEvent);
 end ;
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560166
Ярослав Татаренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю к Dmitry Arefiev: если код разрабатывается для многопроцессорной машины, то нужно учитывать, что TThread.Terminate делает всего лишь Terminated := True. Для обеспечения более корректной работы на многопроцессорной машине необходимо определить свойство Terminated так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 procedure  SetTerminated( const  Value: BOOL);
 begin 
  InterlockedExchange(@FTerminated, Value);
 end ;

 function  GetTerminated: BOOL;
 begin 
  Result := InterlockedExchangeAdd(@FTerminated,  0 );
 end ;
В этом случае при одновременном выполнении 2-х нитей на разных процессорах будет гарантировано получено корректное значение свойства Terminated.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560343
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ярослав ТатаренкоДля обеспечения более корректной работы на многопроцессорной машине необходимо...
...практически переписать TThread, если уж на то пошло.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560358
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я в общем то ничего нового не увидел я предлагал делать так
Код: plaintext
1.
 if  Terminated  then  Exit;
а в vcl потоке по событию какому-нить

Код: plaintext
1.
Thread.Terminate;
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560367
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если FreeOnTerminate=false
Код: plaintext
1.
2.
3.
Tread.Terminate;
Tread.WaitFor;
Tread.Free;
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560373
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Arefiev Ярослав ТатаренкоДля обеспечения более корректной работы на многопроцессорной машине необходимо...
...практически переписать TThread, если уж на то пошло.
на сколько я помню хелп, то для программиста не имеет значение сколько процессоров на машине если использовать TThread
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560419
Ярослав Татаренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paly
на сколько я помню хелп, то для программиста не имеет значение сколько процессоров на машине если использовать TThread
Хелп Вы правильно помните, но вот привирают (или приукрашивают) в хелпе... А выясняется это тогда, когда начинаешь тестировать на реальных MPS.
...
Рейтинг: 0 / 0
Поток и sleep?
    #33560464
paly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ярослав Татаренко paly
на сколько я помню хелп, то для программиста не имеет значение сколько процессоров на машине если использовать TThread
Хелп Вы правильно помните, но вот привирают (или приукрашивают) в хелпе... А выясняется это тогда, когда начинаешь тестировать на реальных MPS.
я не сталкивался с mps так что может быть и привирают)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Поток и sleep?
    #39831654
john eagle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
palyа если FreeOnTerminate=false
Код: pascal
1.
2.
3.
Tread.Terminate;
Tread.WaitFor;
Tread.Free;


А если FreeOnTerminate=false, то делаем просто Tread.Free (в нем всё что вы написали уже есть)
...
Рейтинг: 0 / 0
Поток и sleep?
    #39831718
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john snow eagle,
как хорошо, что ты ответил. А то уже никто и не чаял закончить топик
...
Рейтинг: 0 / 0
Поток и sleep?
    #39832115
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док, )
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поток и sleep?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]