试图学习_beginthreadex并传递参数

时间:2012-10-17 00:40:57

标签: multithreading parameters

复制我用于工作boost线程的一些数据,我在下面实现了以下代码。 我收到错误C:\ dev \ default threads_threads.cpp | 18 | error:无效转换来自' void()(void )' to' unsigned int(属性(( stdcall )))(void )' [-fpermissive] |

但......评论的行是推荐的,注释解释了我得到的错误。

事实证明,强烈建议使用_beginThreadEx,但网上的文档记录很差(如教程中所示)

#include <iostream>
#include <process.h>

void myThread(void *data)
{
    //C:\dev\default threads\_threads.cpp|6|error: invalid conversion from 'int*' to 'int' [-fpermissive]|
    //int x = static_cast<int*>(data);

    int *x = (int*)data;

    std::cout << "Hellow World! " << x;
}

int main()
{

    int x = 10;
    _beginthreadex(NULL, 0, myThread, &x, 0, NULL);
    while(true);
}

1 个答案:

答案 0 :(得分:1)

你必须将x声明为指针:

int *x = static_cast<int*>(data);

这里记录了_beginthread_beginthreadexhttp://msdn.microsoft.com/en-us/library/kdzttdcb(v=vs.80).aspx

根据_beginthreadex()的声明,你的myThread()函数应该像这样声明:

unsigned __stdcall myThread(void *data);