Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-59684
Ler
2003-05-06 13:07
2003.05.19
Создание компонента


1-59787
Ska
2003-05-05 21:01
2003.05.19
Оси Chart


7-59960
bgormakov
2003-03-21 21:40
2003.05.19
Пароли.


3-59612
WD
2003-04-28 17:21
2003.05.19
Local database


6-59826
Керик
2003-03-18 19:01
2003.05.19
Имена интернет-соединений




   Наверх