新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

C++中beginthreadex()如何向线程函数传递参数

发布时间:2023-10-23 10:03:18

C++中beginthreadex()如何向线程函数传递参数

在C++中,可使用lambda函数来传递参数给beginthreadex()函数。

下面是一个示例代码:

#include <iostream>
#include <windows.h>

// 线程函数
DWORD WINAPI MyThread(LPVOID lpParam)
{
    int n = *(int*)lpParam; // 从参数中获得值
    std::cout << "Thread started with parameter: " << n << std::endl;

    // 线程逻辑代码...

    return 0;
}

int main()
{
    int n = 10; // 参数值

    HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, MyThread, &n, 0, NULL); // 传递参数给线程函数

    // 等待线程结束
    WaitForSingleObject(hThread, INFINITE);

    std::cout << "Thread finished" << std::endl;

    return 0;
}

在上面的代码中,使用lambda函数来调用beginthreadex()函数,并将参数n传递给线程函数MyThread()。在线程函数中,使用强迫类型转换将lpParam参数转换为int类型指针,并读取参数值。

请注意,强迫类型转换可能会致使类型不匹配或访问非法内存,所以在实际利用中需要谨慎使用。