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

Вниз

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

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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-59701
Delpher
2003-05-07 16:49
2003.05.19
Данные из файла в последовательность...


1-59702
miha po
2003-05-07 22:36
2003.05.19
АХТУНГ !!! ХЕЛП !!! qtintf70.dll домагаеться...


1-59757
крон
2003-05-06 12:03
2003.05.19
Есть ли у Canvas такая функция определения вхождения в окружность


3-59539
temp
2003-04-29 11:19
2003.05.19
Что за ошибка при установке FastReport?


6-59823
daos
2003-03-21 13:29
2003.05.19
Программа с сокетами стала тормозить!