W3cubDocs

/C++

std::thread::join

void join();
(since C++11)

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

Parameters

(none).

Return value

(none).

Postconditions

joinable is false.

Exceptions

std::system_error if an error occurs.

Error Conditions

Example

#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:

starting first helper...
starting second helper...
waiting for helpers to finish...
done!

See also

permits the thread to execute independently from the thread handle
(public member function)
checks whether the thread is joinable, i.e. potentially running in parallel context
(public member function)

References

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/thread/thread/join