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;
}
这样就完全没有问题了 ,现实结果如下:
![](http://hi.csdn.net/attachment/201203/15/0_1331780988CcJ1.gif)
这个问题解决了,但是注销上面的WaitForSingleObject,让下面的WaitForSingleObject工作 结果又是两个
![](http://hi.csdn.net/attachment/201203/15/0_1331781110FZHE.gif)
我想了一下,这个肯定是线程问题吧 ,当初买电脑,说我的笔记本是四线程的,但是我后来才知道,笔记本是双核四线程的,坑爹的骗人啊,还是在我哥哥熟人手上拿的,
最终只能归结到这个上面来了。
http://zhidao.baidu.com/question/90278998.html
这个帖子讲的是另外一个问题,很有价值,收获很大!
buaa_dep6在帖子里面 写的很有道理,弄一个临界区!
后来又找到了一个unix的,他的解决办法是加一个互斥;
![](http://hi.csdn.net/attachment/201203/15/0_1331782250z2hD.gif)
用了 临界区之后我的
create thread succeed !
还是随机的显示,两个问题还是没有得到解决。
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;
}
这样就完全没有问题了 ,现实结果如下:
![](http://hi.csdn.net/attachment/201203/15/0_1331780988CcJ1.gif)
这个问题解决了,但是注销上面的WaitForSingleObject,让下面的WaitForSingleObject工作 结果又是两个
![](http://hi.csdn.net/attachment/201203/15/0_1331781110FZHE.gif)
我想了一下,这个肯定是线程问题吧 ,当初买电脑,说我的笔记本是四线程的,但是我后来才知道,笔记本是双核四线程的,坑爹的骗人啊,还是在我哥哥熟人手上拿的,
最终只能归结到这个上面来了。
http://zhidao.baidu.com/question/90278998.html
这个帖子讲的是另外一个问题,很有价值,收获很大!
buaa_dep6在帖子里面 写的很有道理,弄一个临界区!
后来又找到了一个unix的,他的解决办法是加一个互斥;
![](http://hi.csdn.net/attachment/201203/15/0_1331782250z2hD.gif)
用了 临界区之后我的
create thread succeed !
还是随机的显示,两个问题还是没有得到解决。
相关文章推荐
- windows API 菜鸟学习之路(三)
- windows API 菜鸟学习之路(四)
- 菜鸟的学习之路(10) — LinkedList类
- IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
- 我——一个 计算机 本科生 菜鸟 学习 之路
- C#基础学习第三天(.net菜鸟的成长之路-零基础到精通)
- IOS开发---菜鸟学习之路--(一)
- 连菜鸟都算不上的代码小萌妹的学习之路开始了
- python菜鸟学习之路
- fl2440 的菜鸟学习之路1
- 菜鸟的Hadoop学习之路系列<一>:自己动手搭建Hadoop集群
- CocosCreator游戏开发---菜鸟学习之路(一)
- IOS菜鸟学习之路
- 菜鸟Android学习之路16——自动补全文本
- 菜鸟Android学习之路19——星级评分条
- CocosCreator游戏开发---菜鸟学习之路(三)如何在CocosCreator中使用Pomelo
- IOS开发---菜鸟学习之路--(七)-自定义UITableViewCell
- IOS开发---菜鸟学习之路--(八)-实现新闻页面
- 菜鸟Android学习之路28——AlertDialog(1)带取消、确认按钮对话框