Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.90
HIMen
4125 / 1374 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
#1

Как завершить поток - C++

19.05.2009, 11:09. Просмотров 4056. Ответов 5
Метки нет (Все метки)

Как завершить поток, начатый _beginthread( Thread, 0, NULL );
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2009, 11:09     Как завершить поток
Посмотрите здесь:

Как завершить программу из функции? - C++
предположим я объявил функцию void function(char* s) { \\код \\а тут мне надо завершить прогу. return 0; } компилятор...

Как корректно завершить COM порт? - C++
Здравствуйте. Пишу программу на С++ CLR для считывания с устройства пакетов данных. Но тут напоролся на проблему, которую не могу...

Как завершить цикл в OpenMP - C++
Использую OpenMP для параллельных расчетов очень нужно при определенном условии экстренно завершить цикл break; с OpenMP не...

Как завершить ввод данных с клавиатуры - C++
Всем доброго времени суток. Я изучать С начал недавно.Изучаю при помощи "Язык программирования С++.Вводный курс." Скажите как...

ExitProcess как правильно завершить процесс? - C++
Есть цикл, в котором поочередно открываются процессы. при использовании ExitProcess(0) выкидывает из программы, открытые процессы остаются.

Программа, имитирующая память компьютера, как завершить? - C++
Жутко нужна программа, которая имитирует память компьютера, ниже представлен код, ошибок нет, но надо завершить его. Программа имитирует...

Как правильно завершить char array (Null terminated) - C++
В гугле вижу самые разные примеры. char* chs = new char; ... chs = '\0'; // Разве 128 существует ? ... delete chs; пробовал...

Статический метод как точка входа в поток - как избавиться - C++
Привет всем.Вопрос такой: использую потоки в своей программе,они создаются и уничтожаются в классе, и в классе так же находится...

Как завершить сеанс Dialup-connecta ("9955555_MTU.DUN") в Win98(ME) ? - C++
Моя программа принимает и отправляет почту (SMTP & POP3) Для этого предварительно устанавливаю по телефонной линии соединение с...

как хранить поток? - C++
задача такая: класс имеет конструктор, этому конструктору при создании объекта класса передаёться поток ostream , соответственно объект...

как через поток .. - C++
как через cout указать, что бы выводил 2 знака после запятой? Добавлено через 3 часа 1 минуту тема актуальна

Как очистить поток ввода? - C++
std::istringstream iss(s1); idd>>a; iss.clear();; s1=s3; iss>>b надо чтоб s3 в b записалось, громадное число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Phantom
Эксперт C++
3162 / 844 / 16
Регистрация: 29.12.2008
Сообщений: 952
19.05.2009, 11:20     Как завершить поток #2
С помощью _endthread.

_beginthread(ThreadRoutine, 0, (void*)(Param));
Здесь запускается задача, функция которой имеет имя ThreadRoutine. Ей передается в качестве параметра значение Param.
Функция ThreadRoutine должна выглядеть следующим образом:

void ThreadRoutine(void *Param)
{
. . .
_endthread();
}
Заметим, что для завершения задачи здесь используется функция _endthread, не имеющая параметров. С помощью этой функции вы можете завершить задачу в любом месте функции задачи. Однако в приведенном выше фрагменте функцию _endthread можно было бы и не использовать, так как операция возврата из функции задачи также приведет к неявному вызову функции _endthread и, как следствие, к завершению задачи.
Взято из этой статьи.
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.05.2009, 11:25     Как завершить поток #3
HANDLE h = reinterpret_cast<HANDLE>(_beginthreadex...);
TerminateThread(h);
HIMen
4125 / 1374 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
19.05.2009, 12:17  [ТС]     Как завершить поток #4
Мне надо завершить поток из функции main.
А какой второй параметр у TerminateThread()?
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.05.2009, 12:24     Как завершить поток #5
TerminateThread
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
19.05.2009, 12:38     Как завершить поток #6
Вообще, все предложенные способы (_endthread(), TerminateThread()) - это методы "грубой силы", очень жесткие, с высоким риском оставить всю остальную часть программы в непредсказуемом состоянии, а для данных, обрабатываемых несчастным потоком - риск навсегда потерять эти данные.

Наиболее корректный способ завершить поток - это подать ему сигнал к завершению и дождаться, когда он спокойно "умрет своей смертью".
Yandex
Объявления
19.05.2009, 12:38     Как завершить поток
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru