powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поток и sleep?
12 сообщений из 37, страница 2 из 2
Поток и 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
12 сообщений из 37, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поток и sleep?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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