CreateThread 传参
时间: 2023-08-15 19:08:52 浏览: 124
在使用 `CreateThread` 创建线程时,可以通过传递一个指向参数的指针来向新线程传递参数。具体步骤如下:
1. 定义一个结构体,结构体中包含需要传递的参数。
```c++
struct ThreadParam {
int arg1;
float arg2;
char arg3;
};
```
2. 在主线程中创建结构体并初始化参数。
```c++
ThreadParam param;
param.arg1 = 10;
param.arg2 = 3.14f;
param.arg3 = 'A';
```
3. 使用 `CreateThread` 创建新线程,并将结构体的地址作为参数传递给新线程。
```c++
DWORD threadId;
HANDLE hThread = CreateThread(NULL, 0, ThreadFunc, ¶m, 0, &threadId);
```
4. 在新线程的函数中,通过参数指针获取参数值。
```c++
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
ThreadParam* pParam = (ThreadParam*)lpParam;
int arg1 = pParam->arg1;
float arg2 = pParam->arg2;
char arg3 = pParam->arg3;
// do something with the parameters
return 0;
}
```
注意:由于新线程可能在主线程之后执行,因此需要确保在新线程函数使用参数之前,主线程不会修改参数的值。可以使用互斥锁等机制来保护参数。
阅读全文