windows下多线程c++
时间: 2023-09-27 20:03:59 浏览: 94
在 Windows 平台下,可以使用 Windows API 提供的线程相关函数来实现多线程。
以下是一个简单的例子:
```c++
#include <iostream>
#include <Windows.h>
using namespace std;
DWORD WINAPI threadFunc(LPVOID lpParam) {
int* num = (int*)lpParam;
cout << "Thread " << *num << " is running" << endl;
return 0;
}
int main() {
HANDLE threads[3];
int nums[3] = { 1, 2, 3 };
for (int i = 0; i < 3; i++) {
threads[i] = CreateThread(NULL, 0, threadFunc, &nums[i], 0, NULL);
if (threads[i] == NULL) {
cout << "CreateThread failed" << endl;
return 1;
}
}
WaitForMultipleObjects(3, threads, TRUE, INFINITE);
for (int i = 0; i < 3; i++) {
CloseHandle(threads[i]);
}
return 0;
}
```
上面的代码创建了三个线程,并且每个线程都打印出自己的标号。在 `CreateThread` 函数中,第一个参数是线程的安全属性,一般设为 `NULL`,第二个参数是线程栈的大小,也可以设为 `0`,第三个参数是线程执行的函数,第四个参数是传递给线程函数的参数,第五个参数是线程的创建标志,设为 `0` 即可,最后一个参数也是安全属性,一般设为 `NULL`。
`WaitForMultipleObjects` 函数用来等待所有线程结束,第一个参数是要等待的线程数,第二个参数是线程的句柄数组,第三个参数是是否等待所有线程结束,设为 `TRUE` 即可,最后一个参数是等待的时间,设为 `INFINITE` 表示无限等待。
最后,别忘了在程序结束前关闭所有线程的句柄。
阅读全文