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
字符串作為參數傳遞給線程函數。當新線程運行時,它將打印出傳遞給它的參數。