Главная страница
    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
14-59929
Тумар
2003-04-27 18:35
2003.05.19
Что вы знаете о своей фамилии???


1-59685
lightix
2003-05-07 16:31
2003.05.19
Вопрос по QReport


14-59881
Max1111
2003-04-29 12:11
2003.05.19
Проиграть wav файл после завершения процедуры


1-59707
off
2003-05-07 16:26
2003.05.19
Отменить нажатую клавишу Edit-е


6-59822
Мурка
2003-03-21 11:01
2003.05.19
MAC по IP





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