首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程小疑点

2012-05-24 
多线程小问题先看代码:#include stdafx.h#include windows .h #include stdio .h UNIT PrintHello (

多线程小问题
先看代码:
#include "stdafx.h"
#include <windows .h >
#include "stdio .h "

UNIT PrintHello (LPVOID lpparam );
int main ()
{
DWORD threadid ;
printf ("1\n ");
CreateThread (NULL ,NULL ,(LPTHREAD_START_ROUTINE )Printf Hello ,0,NULL ,&Thread );
printf ("2\n ");
getchar ();
return 0;
}

UINT PrintfHello (LPVOID lpparam )
{
printf ("0\n ");
return 0;
}

手机手打,有些错误,在这里请稍做修改,不用回帖提及。

问题:我在三个打印函数前加断点,输出的结果会出现2打印两次的情况,这是什么原因?

[解决办法]
printf是c运行库函数,而CreateThread创建的多线程方式是共享C运行库资源。也就是多个线程访问的是同一个资源,并不是访问自己的资源,会导致共享被另一线程所修改。

所以就出现了_beginthread和_beginthreadex。
[解决办法]
vc6 老问题了. 自己去看看vc6版本的printf实现.

热点排行