Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > потоки висят в состоянии "приостановлено"


Автор: gutalin69 20.5.2014, 19:48
 Подскажите пожалуйста почему при запуске даже пустого потока, их функции не выполняются, а сам поток висит в состоянии Wait????
Очень срочно нужно понять....
Если запускаю вне тела функции выполняются, но отладка до них доходит в произвольном порядке, т.е выполняются сначала те функции, которые должны были выполнится ПОСЛЕ, а потом запускается SocketThread

                                DWORD  ThreadId;
                HANDLE hSocketThread=CreateThread(NULL,0,SocketThread,NULL,0,&ThreadId);

Автор: feodorv 21.5.2014, 09:28
Цитата(gutalin69 @  20.5.2014,  20:48 Найти цитируемый пост)
при запуске даже пустого потока

В принципе, поток должен что-то делать, ожидать каких-то событий и т.д. Пустой поток ничего не делает, он завершается в тот же момент, как запущен. Но, да, его состояние оценивается системой как живого (то есть хотя сам поток завершился, но все его структуры и описатели живы), ибо по окончании потока необходимо закрыть хендлер потока. Пока хенделер потока не закрыт, то по нему можно узнать такие вещи, как завершился ли поток, а если завершился, то с каким кодом. Вот ради этого кода (а он может понадобиться программисту) уже завершившийся поток и числится в свободном состоянии. Если же состояние потока, его ожидание или код возврата не нужны, то можно сразу после создания потока закрыть его хендлер. Тогда не должно быть никакого wait (кстати, откуда Вы взяли это самое wait) для пустого потока. Хендлер закрывается через CloseHandler(hSocketThread).


Цитата(gutalin69 @  20.5.2014,  20:48 Найти цитируемый пост)
Если запускаю вне тела функции выполняются, но отладка до них доходит в произвольном порядке, т.е выполняются сначала те функции, которые должны были выполнится ПОСЛЕ, а потом запускается SocketThread

Расшифруйте, пожалуйста.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)