首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::thread::join

void join();

?

(since C++11)

Blocks the current thread until the thread identified by *this finishes its execution.

The completion of the thread identified by *this synchronizes with the corresponding successful return from join().

Parameters

(none).

Return value

(none).

Postconditions

joinable is false.

Exceptions

std::system_error if an error occurs.

Error Conditions

  • resource_deadlock_would_occur if this->get_id() == std::this_thread::get_id() (deadlock detected)
  • no_such_process if the thread is not valid
  • invalid_argument if joinable is false

Example

代码语言:javascript
复制
#include <iostream>
#include <thread>
#include <chrono>
 
void foo()
{
    // simulate expensive operation
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
 
void bar()
{
    // simulate expensive operation
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
 
int main()
{
    std::cout << "starting first helper...\n";
    std::thread helper1(foo);
 
    std::cout << "starting second helper...\n";
    std::thread helper2(bar);
 
    std::cout << "waiting for helpers to finish..." << std::endl;
    helper1.join();
    helper2.join();
 
    std::cout << "done!\n";
}

Output:

代码语言:javascript
复制
starting first helper...
starting second helper...
waiting for helpers to finish...
done!

References

  • C++11 standard (ISO/IEC 14882:2011):
    • 30.3.1.5 thread members thread.thread.member

See also

detach

permits the thread to execute independently from the thread handle (public member function)

joinable

checks whether the thread is joinable, i.e. potentially running in parallel context (public member function)

| C documentation for thrd_join |

代码语言:txt
复制
 ? cppreference.com

Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com