一个简单的线程问题,请高手指点。

db_dw_dm 2011-08-31 08:57:56
使用windows API 做了简单的小程序,发现了很奇怪的结果,百思不得其解,望高手指点,谢谢!

---------------------------------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>

DWORD WINAPI ThreadFunc(LPVOID);

void main()
{
HANDLE hThread;
DWORD threadId;
hThread = CreateThread(NULL,0,ThreadFunc,0,0,&threadId);
printf("Thread running!\n");
printf("*****************\n");
CloseHandle(hThread);
}

DWORD WINAPI ThreadFunc(LPVOID)
{
printf("---------------\n");
return 0;
}

运行结果:
Thread running!
Thread running!
---------------
*****************
Press any key to continue

请问为什么“Thread running!”显示两遍?
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
db_dw_dm 2011-08-31
  • 打赏
  • 举报
回复
这个东西没搞过,楼上回答很好,谢谢。
向立天 2011-08-31
  • 打赏
  • 举报
回复
VS2005
我试了一下
没有你说的问题
ndy_w 2011-08-31
  • 打赏
  • 举报
回复
两个线程都在printf往stdout写,内部缓冲区错了...
说明printf不是线程安全的,要自己加上临界区之类。
Eleven 2011-08-31
  • 打赏
  • 举报
回复
你用的是VC6吧,默认console是单线程版本的
Project-> Settings-> C/C++-> Code Generation-> 改成多线程的版本

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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