一个多线线程的问题,求解释

莫_问 2012-09-17 06:03:23


DWORD WINAPI Fun1Proc(LPVOID lpParameter ); //线程入口函数

int main()
{
HANDLE hThread;

hThread = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread);

printf("main Thread is running \n");

Sleep(10);

return 0;
}

DWORD WINAPI Fun1Proc(LPVOID lpParameter ) //线程入口函
{
printf("thread1 is running \n");

return 0;
}


为什么偶尔会出现如下打印结果:


main Thread is running
main Thread is running
thread1 is running


...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻X 2012-09-17
  • 打赏
  • 举报
回复
printf加锁的话,

也不至于main Thread is running 输出两次把。

太奇怪了
傻X 2012-09-17
  • 打赏
  • 举报
回复
楼上几位是不是没看懂楼主的意思啊??
  • 打赏
  • 举报
回复
printf加锁试试
zhousitiaoda 2012-09-17
  • 打赏
  • 举报
回复
可能是printf的原因吧,这个帖子或许对楼主有帮助
http://blog.csdn.net/zoogar/article/details/7170261
ok1234567 2012-09-17
  • 打赏
  • 举报
回复
这就是多线程的意思,你新开的线程只能被主线程间接控制,它能从系统独立获得执行权
而实际上,你可能无法控制系统的并行性,在CreateThread 和 CloseHandle之间,线程是否被执行完毕,是不确定的...
nullw 2012-09-17
  • 打赏
  • 举报
回复
也许是Sleep(10)导致主线程没有退出,延时10S后缓冲区才输出,用vs2010编译后Sleep(10)可能被优化没有了,没遇到这种情况,并且程序立即完成退出。
莫_问 2012-09-17
  • 打赏
  • 举报
回复

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧