BeginThreadEx
函数可以传递参数给线程函数。BeginThreadEx
函数的原型如下:
DWORD WINAPI ThreadFunction(LPVOID lpParam);
HANDLE WINAPI BeginThreadEx(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
在这个函数中,lpParameter
参数是一个指向要传递给线程函数的参数的指针。当线程函数被创建时,这个参数将被传递给线程函数。
下面是一个简单的示例,演示了如何使用BeginThreadEx
函数传递参数给线程函数:
#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
printf("Thread function called with parameter: %s\n", (char*)lpParam);
return 0;
}
int main() {
char* message = "Hello from the main thread!";
HANDLE hThread = BeginThreadEx(NULL, 0, ThreadFunction, message, 0, NULL);
if (hThread == NULL) {
printf("Failed to create thread.\n");
return 1;
}
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
return 0;
}
在这个示例中,我们创建了一个名为ThreadFunction
的线程函数,它接受一个LPVOID
类型的参数。在main
函数中,我们使用BeginThreadEx
函数创建一个新线程,并将message
字符串作为参数传递给线程函数。当新线程运行时,它将打印出传递给它的参数。