Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
5-1163604047
--= Eagle =--
2006-11-15 18:20
2007.11.25
EClassNotFound


2-1193726020
IntruderLab
2007-10-30 09:33
2007.11.25
FastReport 3.0 переменные


15-1193044810
@Ujin
2007-10-22 13:20
2007.11.25
imgedit.exe - где он? А чем теперь делать ресурсы dcr ???


15-1192999930
SerJaNT
2007-10-22 00:52
2007.11.25
ACDSee 3.0


15-1192869376
hahol_64_rus
2007-10-20 12:36
2007.11.25
блокнотик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский