您的位置:首页 > 编程语言 > C语言/C++

_beginThread如何传递多个参数

2016-03-03 16:38 411 查看
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是个抢占式系统,所以输出的结果并不一定和我们主观想象的一样。

照着这个例子我是摸索着完成了新加上需求的一半,剩下一半要继续加油了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ _beginThread