在C++中,可以使用_beginthreadex
函數來創建線程,該函數的原型如下:
uintptr_t _beginthreadex(
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
下面是一個簡單的示例代碼,演示如何使用_beginthreadex
函數創建線程:
#include <iostream>
#include <windows.h>
#include <process.h>
unsigned int __stdcall myThread(void* data) {
for (int i = 0; i < 5; i++) {
std::cout << "Thread running" << std::endl;
Sleep(1000);
}
return 0;
}
int main() {
HANDLE threadHandle = (HANDLE)_beginthreadex(NULL, 0, myThread, NULL, 0, NULL);
if (threadHandle == 0) {
std::cerr << "Failed to create thread." << std::endl;
return 1;
}
WaitForSingleObject(threadHandle, INFINITE);
CloseHandle(threadHandle);
return 0;
}
在上面的示例代碼中,_beginthreadex
函數用于創建一個新線程,傳入的參數分別為線程安全性參數、棧大小、線程函數、傳遞給線程函數的參數、初始化標志以及用于存儲線程ID的地址。在main
函數中,創建了一個新線程,并等待線程執行完畢后關閉線程句柄。
請注意,_beginthreadex
函數僅在Windows平臺上可用,如果要在不同平臺上創建線程,需要使用相應的線程創建函數。