BeginThreadEx
函數(shù)可以傳遞參數(shù)給線程函數(shù)。BeginThreadEx
函數(shù)的原型如下:
DWORD WINAPI ThreadFunction(LPVOID lpParam);
HANDLE WINAPI BeginThreadEx(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
在這個(gè)函數(shù)中,lpParameter
參數(shù)是一個(gè)指向要傳遞給線程函數(shù)的參數(shù)的指針。當(dāng)線程函數(shù)被創(chuàng)建時(shí),這個(gè)參數(shù)將被傳遞給線程函數(shù)。
下面是一個(gè)簡單的示例,演示了如何使用BeginThreadEx
函數(shù)傳遞參數(shù)給線程函數(shù):
#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;
}
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為ThreadFunction
的線程函數(shù),它接受一個(gè)LPVOID
類型的參數(shù)。在main
函數(shù)中,我們使用BeginThreadEx
函數(shù)創(chuàng)建一個(gè)新線程,并將message
字符串作為參數(shù)傳遞給線程函數(shù)。當(dāng)新線程運(yùn)行時(shí),它將打印出傳遞給它的參數(shù)。