Windows下创建多线程代码
时间: 2023-06-20 15:07:41 浏览: 50
在 Windows 操作系统下,可以使用 WinAPI 中的线程函数创建多线程。以下是一个简单的示例代码:
```c++
#include <iostream>
#include <windows.h>
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
int thread_id = *(int*)lpParam;
std::cout << "Thread " << thread_id << " is running." << std::endl;
return 0;
}
int main() {
const int kNumThreads = 4;
HANDLE threads[kNumThreads];
int thread_args[kNumThreads];
// 创建多个线程
for (int i = 0; i < kNumThreads; ++i) {
thread_args[i] = i;
threads[i] = CreateThread(NULL, 0, ThreadFunc, &thread_args[i], 0, NULL);
if (threads[i] == NULL) {
std::cerr << "Failed to create thread " << i << std::endl;
return 1;
}
}
// 等待所有线程结束
WaitForMultipleObjects(kNumThreads, threads, TRUE, INFINITE);
std::cout << "All threads have completed." << std::endl;
// 关闭所有线程句柄
for (int i = 0; i < kNumThreads; ++i) {
CloseHandle(threads[i]);
}
return 0;
}
```
在该示例代码中,通过 `CreateThread` 函数创建了 4 个线程,并通过 `WaitForMultipleObjects` 函数等待所有线程结束。线程函数 `ThreadFunc` 接收一个参数 `lpParam`,该参数为指向线程 ID 的指针。在 `ThreadFunc` 函数中,通过解引用该指针获取线程 ID 并输出。最后在 `main` 函数中关闭所有线程句柄。