std::thread::joinable(3)
π
std::thread::joinable π
okay so this is the std::thread::joinable(3) page from the C++ Standard Libary manual β yes bestie, that's the manual name folded in right here, and we're not copying the header line, we're giving it main character energy instead. It's a tiny baddie of a page, and it's lowkey important. Let's go. π¦
π NAME π
std::thread::joinable β std::thread::joinable.
That's the name section doing its little mirror thing, and honestly? iconic. It's the std::thread::joinable member function, no notes. π
β¨ Synopsis β¨
bool joinable() const noexcept; (since C++11)
Checks if the std::thread object identifies an active thread of execution.
Specifically, returns true if get_id() != std::thread::id(). So a default constructed thread is not joinable.
A thread that has finished executing code, but has not yet been joined is still considered an active thread of execution and is therefore joinable.
π«Ά Parameters π«Ά
(none) β literally no parameters, not a single one. The parameters section is empty and living its best life. π«Ά
π Return value π
true if the thread object identifies an active thread of execution, false otherwise. That's the whole vibe check. β
π Example π
The page says // Run this code, so run it, bestie:
#include <chrono>
#include <iostream>
#include <thread>
using namespace std::chrono_literals;
void foo()
{
std::this_thread::sleep_for(500ms);
}
int main()
{
std::cout << std::boolalpha;
std::thread t;
std::cout << "before starting, joinable: " << t.joinable() << '\n';
t = std::thread{foo};
std::cout << "after starting, joinable: " << t.joinable() << '\n';
t.join();
std::cout << "after joining, joinable: " << t.joinable() << '\n';
t = std::thread{foo};
t.detach();
std::cout << "after detaching, joinable: " << t.joinable() << '\n';
std::this_thread::sleep_for(1500ms);
}
π Output π
before starting, joinable: false
after starting, joinable: true
after joining, joinable: false
after detaching, joinable: false
π References π
C++23 standard (ISO/IEC 14882:2023):33.4.3.6 Members [thread.thread.member]
C++20 standard (ISO/IEC 14882:2020):32.4.2.5 Members [thread.thread.member]
C++17 standard (ISO/IEC 14882:2017):33.3.2.5 thread members [thread.thread.member]
C++14 standard (ISO/IEC 14882:2014):30.3.1.5 thread members [thread.thread.member]
C++11 standard (ISO/IEC 14882:2011):30.3.1.5 thread members [thread.thread.member]
π¦ See also π¦
get_idβ returns the id of the thread (public member function).joinβ waits for the thread to finish its execution (public member function).detachβ permits the thread to execute independently from the thread handle (public member function).
mwah π this lil page is from http://cppreference.com, dated 2024.06.10, and it's the std::thread::joinable(3) page β source, version, date, all mentioned, periodt. π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms