关于线程的有关问题

关于线程的问题我在主函数里调用了CREATETHREAD建立一个线PARAM*paramnewPARAM()param- argcargcpara

关于线程的问题
我在主函数里调用了CREATETHREAD建立一个线
PARAM   *param=new   PARAM();
param-> argc=argc;
param-> argv=argv;
HANDLE   hThread;
hThread=CreateThread(NULL,0,MainThread,(LPVOID)param,0,&dwMainThreadId);
CloseHandle(hThread);

但是我执行时什么都没发生,我在MainThread函数里使用了printf,但是CMD上什么都没显示程序就结束了
调试时,hThread的值也不是NULL;这是什么原因啊
再PS下,我在MainThread函数里能再建立线程吗?

[解决办法]
多线程是 异步调用的, 当你子线程准备输出时,主线程已经return 退出了.... 所以没发显示..
可以采用wait 技术
[解决办法]
PARAM *param=new PARAM();
param-> argc=argc;
param-> argv=argv;
HANDLE hThread;
hThread=CreateThread(NULL,0,MainThread,(LPVOID)param,0,&dwMainThreadId);
sleep(1000); // <- 加上这句就会看见了
CloseHandle(hThread);
原因楼上已经说了。


[解决办法]
嗯,主线程已经退出了
问问楼主是根据哪本书学的
单位里有同事也遇到同样的问题
CreateThread 以后可以调用 WaitForSingleObject
等待子线程结束
[解决办法]
主线程退出会导致整个进程被杀死
[解决办法]
主线程退出时,整个进程就终止了,所以你看不到效果。