powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как передать строковый параметр в CreateThread?
7 сообщений из 32, страница 2 из 2
Как передать строковый параметр в CreateThread?
    #38408901
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivтот, который на выходе зовёт ExitProcess
Ну так это если этот первый среди равный ещё вызовет ExitProcess(), чего совершенно не
обязан делать...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38408983
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А как ты думаешь, по выходу из main что происходит ?
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38409019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivпо выходу из main что происходит ?
У стандартного кода инициализации МSVC - да, вызов ExitProcess. Но это чисто проблемы
данного инициализатора.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38409135
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима, ты конечно все правильно говоришь, только есть одно "но": какой-то поток из многих потоков приложения должен завершить процесс. И обычно это делает тот поток, с которого процесс и начался, выполнением точки входа в приложение. По-моему все очень логично.
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38409151
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivкакой-то поток из многих потоков приложения должен завершить процесс

Процесс и сам по себе завершится, когда в нём не останется ни одного потока.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38409381
_Прохожий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivНе очень. Как правило, родительский поток (главный) не может завершиться прежде, чем все дочерние завершатся.
Иначе приложение закроется, а дочерние потоки будут убиты. Если они ещё работали, их работа останется недолеланной.
Как правило (в 99% слочаев) в приложениях сохраняют все хендлы дочерних потоков и на выходе из приложения дожидаются их окончания с помощью WaitForXXXX.

Закрытие или не закрытие хэндла потока, возвращенного CreateThread, не влияет на завершение процесса. Влияет только на уничтожение thread object, т.е. системной структуры, описывающей поток. Он не будет уничтожен после завершения потока пока ВСЕ референсы(т.е. не только хэндл, возвращенный CreateThread, а и дубликаты, если они были) на хэндл потока не будут закрыты CloseHandle. Иначе нельзя было бы получить например код завершения потока, после того как поток завершился.
Поэтому закрытие хэндла потока после его получения, просто дает системе возможность удалить thread object сразу же после завершения потока. И так делать не только можно, но и нужно, если хэндл потока не будет использоваться позже.
Ну а не закрытие хэндла потока соответственно вызывает утечку памяти.

Дмитрий77, я думаю вам еще нужно знать, что создание потока с помощью CreateThread на 100% безопасно только если не используется CRT и библиотеки, использующие CRT.
...
Рейтинг: 0 / 0
Как передать строковый параметр в CreateThread?
    #38410540
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Прохожий_Дмитрий77, я думаю вам еще нужно знать, что создание потока с помощью CreateThread на 100% безопасно только если не используется CRT и библиотеки, использующие CRT.
исходное С++ приложение (без моих наворотов) - чисто консольное и платформенно-независимое (т.е. годится и под линукс, и т.д.),
я туда добавил в частности CreateWindow - окно вида HWND_MESSAGE для ловли сообщений из вне
Не похоже что там будут проблемы из-за потоков.

А вот любые попытки использовать CreateThread в VB6 например (нарочно попытался воспроизвести в VB6 подобное) - это ДА - сплошные краши.
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как передать строковый параметр в CreateThread?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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