创建线程函数CreateThread的lpParameter参数怎么设置才能将在主线程中初始化的值传递给线程函数

2025-02-24 05:38:10
推荐回答(5个)
回答1:

可以传递一个参数给线程函数,线程函数是这么个形式
DWORD WINAPI MyThreadProc(LPVOID lpParameter)
你在CreateThread给他的这个参数就是传递到了线程函数。这个参数完全是编程的人自己决定的,可以直接给NULL,比较常见的是你建立一个结构体,把你希望传递进去的信息都写在结构体里面
typedef struct
{
int paraInt;
DWORD paraDW;
....
} ThreadParameter;

然后在CreateThread:
ThreadParameter para;
//设置参数省略
CreateThread(NULL, NULL,
MyThreadProc, reinterpret_cast(& para),
NULL, NULL);

回答2:

LPVOID lpParameter, 说明这个参数是个空指针类型, 简单的说,你想传任何东西都可以,强制转换就OK了.
例如 int i = 10; 你想传这个进去的话参数 就写 (void*)&i , 到了函数里面再强制转换回来 int iTemp = *((int*)lpParameter) 或者直接用指针 int* ipTemp = (int*) lpParameter;
例如 float f = 10.0; 你想传这个进去的话 就写 (void*)&f , 到了函数里面再强制转换回来 float fTemp = *((float*)lpParameter) 或者直接用指针 float* ipTemp = (int*) lpParameter;
自己的类的话 也是同样的转换

回答3:

VOID* 可以是任意的变量。。
可以传递一个结构体,也可以是类。。看你淫荡指数。。
请自己仔细看MSDN。孙鑫的VC++编程也讲过了。。

回答4:

直接把主线程的值所在的窗体传过去就可以了。

回答5:

int i=1;
CreateThread(.., (LPVOID)i ,..);
在线程函数在把变量的类型转换回来应该就可以