在 C++ 中,可以使用标准库中的 std::thread 类来创建和管理线程。要主动结束一个线程,可以使用 std::thread 类的 join()detach() 方法。

  1. 使用 join() 方法:调用 join() 方法会阻塞当前线程,直到被调用的线程执行完毕。可以在主线程中调用被结束线程的 join() 方法来等待该线程执行完毕,从而实现主动结束线程的目的。
#include <iostream>
#include <thread>

void myThreadFunc() {
    // 线程执行的代码
    // ...
}

int main() {
    std::thread myThread(myThreadFunc);
    
    // 等待线程执行完毕
    myThread.join();
    
    std::cout << "Thread ended." << std::endl;
    
    return 0;
}
  1. 使用 detach() 方法:调用 detach() 方法会将线程与 std::thread 对象分离,使得线程在后台独立运行,不再与 std::thread 对象相关联。这样一旦线程执行完毕,其资源会被自动释放,无需手动调用 join() 方法。
#include <iostream>
#include <thread>

void myThreadFunc() {
    // 线程执行的代码
    // ...
}

int main() {
    std::thread myThread(myThreadFunc);
    
    // 分离线程
    myThread.detach();
    
    std::cout << "Thread detached." << std::endl;
    
    return 0;
}

需要注意的是,一旦线程被分离,就无法再通过 join() 方法等待线程执行完毕,也无法再通过 detach() 方法重新将线程与 std::thread 对象关联。因此,在使用 detach() 方法时需要确保线程能够独立运行,并且不再需要与 std::thread 对象进行交互。

C++ 线程主动结束:join() 和 detach() 方法详解

原文地址: http://www.cveoy.top/t/topic/fyCF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录