C++windows多线程
时间: 2023-11-14 17:25:29 浏览: 114
C++中使用多线程可以通过使用`<thread>`头文件中的`std::thread`类来实现。以下是几个使用C++多线程的例子:
范例1:
```cpp
#include <iostream>
#include <thread>
using namespace std;
void myPrint() {
cout << "我的线程开始运行" << endl;
//...
cout << "我的线程运行完毕" << endl;
}
int main() {
thread myThread(myPrint);
myThread.join();
cout << "Hello World!" << endl;
system("pause");
return 0;
}
```
上述代码中,我们使用`std::thread`类创建了一个线程对象`myThread`,并指定了线程执行的起点为`myPrint`函数。然后我们调用`myThread.join()`函数阻塞主线程,等待子线程完成执行,然后主线程继续执行。
范例2:
```cpp
#include <iostream>
#include <thread>
using namespace std;
class Ta {
public:
void operator()() {
cout << "我的线程开始运行" << endl;
//...
cout << "我的线程运行完毕" << endl;
}
};
int main() {
Ta ta;
thread myThread(ta);
myThread.join();
cout << "Hello World!" << endl;
system("pause");
return 0;
}
```
上述代码中,我们定义了一个类`Ta`,重载了`operator()`运算符,然后将对象`ta`传给`std::thread`类的构造函数创建了一个线程对象`myThread`,线程执行的起点为`ta`对象。然后我们调用`myThread.join()`函数阻塞主线程,等待子线程完成执行,然后主线程继续执行。
范例3:
```cpp
#include <iostream>
#include <thread>
using namespace std;
void myPrint() {
cout << "我的线程开始运行" << endl;
//...
cout << "我的线程运行完毕" << endl;
}
int main() {
thread myThread(myPrint);
myThread.join();
if (myThread.joinable()) {
cout << "可以调用join()或者detach()" << endl;
} else {
cout << "不能调用join()或者detach()" << endl;
}
cout << "Hello World!" << endl;
system("pause");
return 0;
}
```
上述代码中,我们创建了一个线程对象`myThread`,线程执行的起点是函数`myPrint`。然后我们调用`myThread.join()`函数阻塞主线程,等待子线程完成执行,然后主线程继续执行。在之后,我们使用`myThread.joinable()`函数来判断线程是否可以调用`join()`或者`detach()`函数。
以上是使用C++实现多线程的几个范例。希望对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Windows环境下的多线程编程(上)C++](https://blog.csdn.net/m0_56574701/article/details/124174550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文