windows API 菜鸟学习之路(二)

对于昨天的运行结果,在别人的笔记本上面运行了几次,每次都是

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 !

还是随机的显示,两个问题还是没有得到解决。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值