Windows C++线程参数传递

ros*_*b83 6 c++ windows multithreading function-pointers

在Windows c ++中,以下内容创建一个线程:

CreateThread(NULL, NULL, function, parameter, NULL, &threadID);
Run Code Online (Sandbox Code Playgroud)

这将在新线程中运行"function"并将其作为void*或LPVOID传递给"parameter".

假设我想将两个参数传递给"函数",除了创建包含两个变量的数据结构然后将数据结构转换为LPVOID之外,还有更好的方法吗?

JWo*_*ood 13

不,这是唯一的方法.只需创建一个包含2个数据成员的结构,并将其作为void*传递


Dat*_*ale 6

#include <windows.h>
#include <stdio.h>

struct PARAMETERS
{
    int i;
    int j;
};

DWORD WINAPI SummationThread(void* param)
{
    PARAMETERS* params = (PARAMETERS*)param;
    printf("Sum of parameters: i + j = \n", params->i + params->j);
    return 0;
}

int main()
{
    PARAMETERS params;
    params.i = 1;
    params.j = 1;

    HANDLE thdHandle = CreateThread(NULL, 0, SummationThread, &params, 0, NULL);
    WaitForSingleObject(thdHandle, INFINITE);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)