Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / можно ли закрывать хэндл потока из функции потока? / 9 сообщений из 9, страница 1 из 1
09.06.2016, 21:37
    #39253917
cpp_10_6_16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
Здравствуйте,

есть код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
HANDLE h;
DWORD WINAPI func(LPVOID param)
{
	for(int i=0;i<10000;i++)
		if(i%100==0)
			cout<<"i="<<i<<endl;
	::CloseHandle(h);
	return 0;
}

int main(int argc, const char* argv[])
{
	DWORD id= 0;
	h= ::CreateThread(NULL, 0, &func, NULL , 0, &id);
	cout<<"thread created"<<endl;
	getchar();
	return 0;
}


вроде бы работает, но правильно ли так делать?
заранее благодарю за ответы
...
Рейтинг: 0 / 0
09.06.2016, 21:45
    #39253918
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
Нет, так делать неправильно.
А так как показано - еще и бессмысленно. Объясни: чего ты хочешь добиться закрывая хендл потока? Что ты планируешь делать если запустишь второй, третий, четвертый, и так далее поток?
...
Рейтинг: 0 / 0
09.06.2016, 22:04
    #39253921
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
cpp_10_6_16правильно ли так делать?
Неправильно. Закрывай хэндл сращу в main().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 22:56
    #39253931
cpp_10_6_16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
White OwlНет, так делать неправильно.
А так как показано - еще и бессмысленно. Объясни: чего ты хочешь добиться закрывая хендл потока? Что ты планируешь делать если запустишь второй, третий, четвертый, и так далее поток?

я хочу запустить поток и не заботиться о его закрытии, аналогично :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void runThread()
{
	boost::thread t(func);
	t.detach();
}

int main(int argc, const char* argv[])
{
	runThread();
	cout<<"thread created"<<endl;
	getchar();
	return 0;
}
...
Рейтинг: 0 / 0
09.06.2016, 23:00
    #39253933
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
cpp_10_6_16я хочу запустить поток и не заботиться о его закрытии
Читай Рихтера и сообщение выше: закрывай хэндл сразу после _beginthread().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 23:08
    #39253934
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
Dimitry Sibiryakovcpp_10_6_16я хочу запустить поток и не заботиться о его закрытии
Читай Рихтера и сообщение выше: закрывай хэндл сразу после _beginthread().
Это и без Рихтера очевидно
...
Рейтинг: 0 / 0
09.06.2016, 23:24
    #39253937
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
ИзопропилЭто и без Рихтера очевидно
Без Рихтера он явно считает, что хэндл мистически связан с потоком и его закрытие приведёт
к прерыванию выполнения потока.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 23:35
    #39253939
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
Dimitry SibiryakovИзопропилЭто и без Рихтера очевидно
Без Рихтера он явно считает, что хэндл мистически связан с потоком и его закрытие приведёт
к прерыванию выполнения потока.

По этой логике поток , закпывающий свой хендл совершает в этот иомент суицид
...
Рейтинг: 0 / 0
09.06.2016, 23:37
    #39253941
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли закрывать хэндл потока из функции потока?
ИзопропилПо этой логике поток , закпывающий свой хендл совершает в этот иомент суицид

Поэтому он и поставил вызов CloseHandle() в самый конец, туда, где ставят ExitThread().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / можно ли закрывать хэндл потока из функции потока? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]