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型ポインタに変換し、引数値を読み取ります。
強制型変換は型不一致や不正メモリへのアクセスを引き起こす可能性がありますので、実際には注意して使用してください。