Methods of Threads

This lesson lists and explains the commonly used methods of threads in C++.

We'll cover the following

Here is the interface of std::​thread t in a concise table. For additional details, please refer to cppreference.com.

Method Description
t.join() Waits until thread t has finished its executable unit.
t.detach() Executes the created thread t independently of the creator.
t.joinable() Returns true if thread t is still joinable.
t.get_id() and std::this_thread::get_id() Returns the identity of the thread.
std::thread::hardware_concurrency() Returns the number of cores, or 0 if the runtime can not determine the number. Indicates the number of threads that can be run concurrently. This is according to the C++ standard.
std::this_thread::sleep_until(absTime) Puts thread t to sleep until the time point absTime. Needs a time point or a time duration as an argument.
std::this_thread::sleep_for(relTime) Puts thread t to sleep for the time duration relTime. Needs a time point or a time duration as an argument.
std::this_thread::yield() Enables the system to run another thread.
t.swap(t2) and std::swap(t1, t2) Swaps the threads.

More on Swap

Also, note that threads cannot be copied, but they can be moved; the swap method performs a move when possible.

In the next lesson, we will demonstrate how a few of the methods are used in practice.

Access to the system-specific implementation

The C++11 threading interface is a wrapper around the underlying implementation. You can use the method native_handle to get access to the system-specific implementation. This holds true for threads, mutexes, and condition variables.

Get hands-on with 1400+ tech skills courses.