Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

Остановка спящих потоков   Найти похожие ветки 

 
SpellCaster   (2007-05-15 14:05) [0]

Такая проблемка: есть набор потоков. При возникновении определенных ошибок я останавливаю поток через Wait на какое-то время, ятобы потом повторить попытку. Так вот, если в этот момент закрыть программу, то надо либо зверски убивать этот поток, либо ждать, пока он проснётся. Нет ли какого-нибудь другого способа, половчее? Может, вместо большого Wait сделать while (not terminated) and (not TimeoutExpired) do Wait(100)?


 
clickmaker ©   (2007-05-15 14:10) [1]

Events, WaitForSingleObject(hEvent
SetEvent(hEvent) при остановке


 
SpellCaster   (2007-05-15 15:12) [2]

Нельзя ли поподробнее?


 
clickmaker ©   (2007-05-15 15:32) [3]


> [2] SpellCaster   (15.05.07 15:12)

hEvent := CreateEvent() в несигнальном состоянии
поток стопоришь WaitForSingleObject(hEvent)
при закрытии программы SetEvent - потоки отомрут и завершатся штатно (если по логике так)
всё


 
Kolan ©   (2007-05-15 16:10) [4]

> либо ждать, пока он проснётся.

Те clickmaker советует почти тоже самое , только ждать ненадо, а надо самому его будить.


 
SpellCaster   (2007-05-15 17:06) [5]

> поток стопоришь WaitForSingleObject(hEvent)
> при закрытии программы SetEvent - потоки отомрут и завершатся
> штатно (если по логике так)

Немного не то... мне ведь нужно остановить поток на какое-то время, чтобы он впустую не крутился и проц не грузил. А вариант с событием предполагает, что поток остановлен до тех пор, пока прогу не закроют - но в этом смысла нет, т.к. легче его сразу прибить...


 
SpellCaster   (2007-05-15 17:08) [6]

Хотя пардон, сразу не въехал. Ведь у WaitForSingleObject есть таймаут! Т.е. выходит, поток будет ждать либо события (которое будет установлено в OnClose проги), либо указанное время. Всё ясно, сейчас попробую!


 
clickmaker ©   (2007-05-15 17:09) [7]


> [5] SpellCaster   (15.05.07 17:06)

WaitForSingleObject - второй параметр смотрел?


 
SpellCaster   (2007-05-15 17:11) [8]

> [7] clickmaker ©   (15.05.07 17:09)

Я раньше успел исправиться ;)


 
SpellCaster   (2007-05-15 17:58) [9]

Всё отлично работает, спасибо!



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

Текущий архив: 2007.11.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-1184316065
Сатир
2007-07-13 12:41
2007.11.25
Invalid typecast


1-1189057852
Девушка
2007-09-06 09:50
2007.11.25
раскрашенный Combobox или LookupBox


2-1193840686
Ламер
2007-10-31 17:24
2007.11.25
Команды посылаемые модемом серверу


3-1184139774
Krants
2007-07-11 11:42
2007.11.25
ADO, найти Key


15-1193402767
Alien1769
2007-10-26 16:46
2007.11.25
Работа с модемом