Привет всем.Спецы подскажите, как быть с такой проблемой: сначало создается диалог, а он в свою очередь создает тред CreateProcessом и передает свой дескриптор в lparame для обратной связи (обновление инфы и тд).Но вот проблема, хочеться как-то сделать что б из диалога можно было этот тред остановить\прекратить.Но вопрос: как хранить дескриптор треда??? локально -- стэк затирается, а если в статической памяти, то какая же здесь будет многопоточность, если память каждый раз будет затираться значением дискриптора нового потока??? Если я написал полный бред не обижайтесь. Если можно киньте пару ссылок по теме пока от этой идее отказался но вот еще какая фигня: допустим работают 3 потока (потоки получают письма с POP3 сервера).Вот работают себе все нормально, но через промежуток времени один из них просто останавливается!!!! Я написал тот же алгоритм на перле но там та же байда. Я думаю, может это связано с тем, что мыльный сервер офигивает, когда у него 3 чувака с одним логином качают одновременно письма.Или в цикле где-то слип нужен? Напишите пожалуйста кто, что думает по этим вопросам. ЗЫ:и еще вопрос (извиняюсь, что совсем не в кассу но так что б все сразу) подскажите какой нибудь web/irc чат, где можно пообщаться по теме программирования и тд(форум штука классная никто и не спорит, но хочется пообщаться и в риалтайме).На этом закругляюсь.
Еси я праильно понял, то твой диалог - это главная прога, которая создает дополнительные потоки, у каждого из которых есть свой threadID, ну короче дескриптор thread_а, если ты хочешь из диалоговой проги управлять этими тредами, то какие проблемы - хранишь просто в локальных переменных эти дескрипторы и пользуешься ими, можешь завести массивчик дескрипторов и т.п.
_DaO_ Не забывай, при выходе из процедуры окна они теряются -> только массив дескрипторов в глобальных переменных или выделить память под них. kori Поток сам по себе не может остановиться, для этого он должен сделать sleep или сам себя остановить, вывод только один сервер не передаёт данные в сокет и трэд висит на этом сокете (recv(...)) в ожидании чего-либо Скорее это особенность сервака.
Есть серверы, запрещающие одновременный доступ. Но при этом выводящие что-то типа "mailbox locked". Так что выводи для отладки всё, что пишет сервер. Но чаще так как я сказал — одновременный доступ запрещён.
SteelRat Да, сорри, оговорился, конечно в глобальных. Но если программирование на примитивном уровне, т.е. стандартный win32 каркас, то можно завести локальные переменные в функции WinMain, но при этом надо обрабатывать сообщения от диалога в самой функции WinMain до вызова функции DispatchMessage в цикле сообщений (она передает сообщения окну), тогда эти локальные в функции WinMain переменные будут доступны. Ну это подход - через здц. Глобальные - легче.
_DaO_ Не совсем так.Этот диалог появляется при выборе меню. Можно сделать так: в главном окне, допустим в WM_CREATE ,выделять GlobalAlloc_ом память(глобальна), а диалог при создании треда записывает в нее : свой хандл хандл треда При WM_COMMAND он ищет свой хандл и потом получает хандл треда. Перед EndDialog_ом подчищает за собой. IceStudent Одновременный доступ, как не странно, разрешен.Видимо по этому сервак и глючит, когда работает один тред - все нормально.