_beginThread如何传递多个参数

PS:对于一个C++渣来说,能在网上找到简单直白的解释真的是不容易,有时候给几个简单的例子才是直击心灵啊,翻了那么多篇介绍_beginThread传递多个参数的文章看到这篇的时候我都要膨胀了233

原文连接:http://blog.sina.com.cn/s/blog_5357c0af0100fnon.html,再次感谢博主

#include <process.h>

#include <iotream.h>

using namespace std;



unsigned int Thread1(void *lpVoid)
{
     int pnInt = (int)lpVoid;
     cout << pnInt << endl;
     return 0;
}



int main()

{

    int nNum = 12;

    _beginthread((void (__cdecl *) (void *))Thread1, 0, (void *)nNum);

     Sleep(10);
     printf("%d", nNum);

}

这样,就会输出2个12。

关于多个参数传递的问题,可以自定义一个结构类型,把要传递的参数包含进去,这样就可以实现多参数传递了。

比如



#include <process>

#include <iostream>

using namespace std;
struct _tagValue
{
     int nNum1;
     int nNum2;
};
typedef _tagValue Value;



unsigned int Thread1(void *lpVoid);



int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
     Value sValue;
     sValue.nNum1 = 1;
     sValue.nNum2 = 2;
     int nNum = 12;
     _beginthread((void (__cdecl *) (void *))Thread1, 0, (void *)&sValue);
     Sleep(2);
    cout << "nNum = " << nNum << '\n';
     return 0;
}

unsigned int Thread1(void *lpVoid)
{
     Value *pnInt = (Value*)lpVoid;
     cout << "传递的参数是 "

             << pnInt->nNum1

             <<  pnInt->nNum2 << '\n';
     return 0;
}

当然,上面只是例子,具体因为Windows是个抢占式系统,所以输出的结果并不一定和我们主观想象的一样。

 

 

 

照着这个例子我是摸索着完成了新加上需求的一半,剩下一半要继续加油了

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值