C++中thread.join()函数的含义、用法和注意事项

分类:知识百科 日期: 点击:0

C++中thread.join()函数是指等待某一个线程结束,它有两个重载函数:

void join();
template
bool join(const std::chrono::duration& timeout_duration);

用法

第一个重载函数void join()用于等待线程结束,它会一直阻塞,直到线程结束,才会返回。第二个重载函数bool join(const std::chrono::duration& timeout_duration)用于等待线程结束,它会在超时后返回,不会一直阻塞。

使用示例

#include 
#include 
#include 

void func()
{
    std::cout << "func thread start" << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(5));
    std::cout << "func thread end" << std::endl;
}

int main()
{
    std::thread t(func);
    t.join();
    std::cout << "main thread end" << std::endl;
    return 0;
}

上面的示例中,主线程创建了一个新线程t,并使用thread.join()函数等待t线程结束,这样主线程才会继续执行。

注意事项

  • 不要对同一个线程调用多次thread.join()函数,因为只有第一次调用才有效,多次调用会导致程序异常。
  • 不要对一个已经结束的线程调用thread.join()函数,因为会导致程序异常。
  • 线程调用thread.join()函数后,会一直阻塞,直到线程结束,才会返回,应该避免在主线程中使用该函数,以免影响程序的性能。
标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。