PS:对于一个C++渣来说,能在网上找到简单直白的解释真的是不容易,有时候给几个简单的例子才是直击心灵啊,翻了那么多篇介绍_beginThread传递多个参数的文章看到这篇的时候我都要膨胀了233
原文连接:http://blog.sina.com.cn/s/blog_5357c0af0100fnon.html,再次感谢博主
#include
#include
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
#include
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是个抢占式系统,所以输出的结果并不一定和我们主观想象的一样。
照着这个例子我是摸索着完成了新加上需求的一半,剩下一半要继续加油了
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204852.html原文链接:https://javaforall.net
