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

Вниз

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

 
Vitek   (2003-03-15 00:47) [0]

Создаю поток/нить : CreateThread(...);
Процедура чёто там выполняет ... а именно копируется блок данных по сети , причём немаленьки :) те уходит на копирование приличное время, поток подвисает ... и когда приложения пытаются закрыть вылазит страшная ошибка :) Посоветуйте как прибить поток, а то приходится ждать когда он там свои дела доделает...


 
theodor_iv   (2003-03-15 08:57) [1]

TerminateThread, но это только в крайнем случае. Лучше поискать более корректное решение проблемы. Например, создать переменную-флажок, которую вызывающий поток будет устанавливать, когда необходимо завершить работу, а вызываемый -- периодически проверять.


 
Alex Konshin   (2003-03-15 11:37) [2]

Во-первых, почитай help про BeginThread/EndThread.
А по существу вопроса: как копируешь, как ждешь (и внутри потока, и сам поток)? Ты же ничего не сказал.
TerminateThread - это уж на крайний случай, постарайся обойтись без него.


 
Александр Спелицин   (2003-03-20 12:25) [3]

Если поток действительно что-то делает, то пусть он перед каждым элементарным действием проверяет какой-либо флаг, пусть даже Terminated.
А вот если чего-то ждет то тут немного посложнее. Сделать все операции асинхронными. А их состояние анализировать по состоянию объекта "Событие" (Event) из структуры OVERLAPPED. Только вместо WaitForSingleObject использовать WaitForMultipleObjects. И передавать в нее массив из 2-х описателей: 1-й - это Событие из из структуры OVERLAPPED, а второй - это тоже Событие, но созданное Вами. Вы измените его состояние в "Установлен" (Signaled), если нужно завершить поток.
Далее справка по WaitForMultipleObjects в MSDN.

Хороший пример на эту тему есть в примерах MSDN. Найдите файлы simple.c, service.c. Посмотрите, как там орнанизована работы с именоваными каналами.



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

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

Наверх





Память: 0.45 MB
Время: 0.006 c
3-59638
NiBL'S
2003-04-29 10:38
2003.05.19
Проблема конекта.


14-59928
xman
2003-04-29 15:34
2003.05.19
ссылки


14-59868
SPeller
2003-04-28 12:08
2003.05.19
Задача


3-59602
sva82
2003-04-28 11:51
2003.05.19
Замена строк на столбцы


1-59706
DDDeN
2003-05-07 05:56
2003.05.19
Вопросы по значкам Копирайт и т.д.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский