您的位置:首页 > 其它

windows API 菜鸟学习之路(二)

2012-03-15 11:21 225 查看
对于昨天的运行结果,在别人的笔记本上面运行了几次,每次都是

create thread succeed !

和create thread succeed !

parameter is 1

这两种现实

但是我的笔记本确实显示了两个

create thread succeed !



最后上百度看到一大神说是多核引起的,貌似感觉是的,

修改了可以正常运行了

代码如下

// thread_01.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "windows.h"

DWORD WINAPI FiestThread(LPVOID lpParameter); //线程处理函数

int main(int argc, char* argv[])

{

DWORD dwthreadId , dwthreadpara = 1 ;

HANDLE hthread;

hthread = CreateThread( 0 , 0 , FiestThread, &dwthreadpara ,0 ,&dwthreadId);

if (hthread == NULL)

{

printf("create thread fial \n!");

}

else

{

WaitForSingleObject(hthread ,INFINITE );

printf("create thread succeed !\n");

//WaitForSingleObject(hthread ,INFINITE );

CloseHandle(hthread);

}



return 0;

}

DWORD WINAPI FiestThread(LPVOID lpParameter)

{

//printf("parameter is %d\n",*(DWORD*)lpParameter);



for (int i = 0 ; i < 20 ; ++i )

{

printf("this is %d \n",i);

}



return 0;

}



这样就完全没有问题了 ,现实结果如下:





这个问题解决了,但是注销上面的WaitForSingleObject,让下面的WaitForSingleObject工作 结果又是两个



我想了一下,这个肯定是线程问题吧 ,当初买电脑,说我的笔记本是四线程的,但是我后来才知道,笔记本是双核四线程的,坑爹的骗人啊,还是在我哥哥熟人手上拿的,

最终只能归结到这个上面来了。



http://zhidao.baidu.com/question/90278998.html

这个帖子讲的是另外一个问题,很有价值,收获很大!

buaa_dep6在帖子里面 写的很有道理,弄一个临界区!

后来又找到了一个unix的,他的解决办法是加一个互斥;




用了 临界区之后我的

create thread succeed !

还是随机的显示,两个问题还是没有得到解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: