2个线程,一个线程停止运行,程序正常运行 c++
时间: 2023-08-05 20:42:28 浏览: 91
要实现一个线程停止,而不影响程序的正常运行,可以使用线程的 joinable() 方法来判断线程是否还在运行中。如果线程还在运行中,可以使用线程的 join() 方法等待线程结束。如果线程已经结束,可以不必执行 join() 方法。以下是一个简单的示例代码:
```c++
#include <iostream>
#include <thread>
void thread_func() {
// 线程执行的代码
for (int i = 0; i < 10; ++i) {
std::cout << "Thread: " << i << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
int main() {
// 创建一个线程
std::thread t(thread_func);
// 让主线程等待一段时间
std::this_thread::sleep_for(std::chrono::milliseconds(500));
// 如果线程还在运行中,则等待线程结束
if (t.joinable()) {
t.join();
}
// 输出一条消息
std::cout << "Main thread: Done!" << std::endl;
return 0;
}
```
在上面的代码中,我们创建了一个线程 t,然后让主线程等待 500 毫秒。在这段等待时间中,线程 t 可能已经执行完毕,也可能还在执行中。因此,我们通过 joinable() 方法来判断线程是否还在运行中,如果是,则使用 join() 方法等待线程结束。最后,在主线程中输出一条消息,表示程序正常运行结束。
阅读全文