Standard library header <thread>
From cppreference.com
This header is part of the thread support library.
Includes | ||
(C++20) | Three-way comparison operator support | |
Namespaces | ||
this_thread | provide functions that access the current thread of execution | |
Classes | ||
(C++11) | manages a separate thread (class) | |
(C++20) | std::thread with support for auto-joining and cancellation (class) | |
specializes std::hash (class template specialization) | ||
Functions | ||
(C++11) | specializes the std::swap algorithm (function) | |
(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) | compares two thread::id objects (function) | |
serializes a thread::id object (function template) | ||
Defined in namespace std::this_thread | ||
(C++11) | suggests that the implementation reschedule execution of threads (function) | |
(C++11) | returns the thread id of the current thread (function) | |
(C++11) | stops the execution of the current thread for a specified time duration (function) | |
(C++11) | stops the execution of the current thread until a specified time point (function) |
[edit]Synopsis
#include <compare> namespace std {class thread; void swap(thread& x, thread& y)noexcept; // class jthreadclass jthread; namespace this_thread { thread::id get_id()noexcept; void yield()noexcept;template<class Clock, class Duration>void sleep_until(const chrono::time_point<Clock, Duration>& abs_time);template<class Rep, class Period>void sleep_for(const chrono::duration<Rep, Period>& rel_time);}}
[edit]Class std::thread
namespace std {class thread {public:// typesclass id;using native_handle_type =/* implementation-defined */; // construct/copy/destroy thread()noexcept;template<class F, class... Args>explicit thread(F&& f, Args&&... args); ~thread(); thread(const thread&)= delete; thread(thread&&)noexcept; thread& operator=(const thread&)= delete; thread& operator=(thread&&)noexcept; // membersvoid swap(thread&)noexcept;bool joinable()constnoexcept;void join();void detach(); id get_id()constnoexcept; native_handle_type native_handle(); // static membersstaticunsignedint hardware_concurrency()noexcept;};}
[edit]Class std::jthread
namespace std {class jthread {public:// typesusing id = thread::id;using native_handle_type = thread::native_handle_type; // constructors, move, and assignment jthread()noexcept;template<class F, class... Args>explicit jthread(F&& f, Args&&... args); ~jthread(); jthread(const jthread&)= delete; jthread(jthread&&)noexcept; jthread& operator=(const jthread&)= delete; jthread& operator=(jthread&&)noexcept; // membersvoid swap(jthread&)noexcept;[[nodiscard]]bool joinable()constnoexcept;void join();void detach();[[nodiscard]] id get_id()constnoexcept;[[nodiscard]] native_handle_type native_handle(); // stop token handling[[nodiscard]] stop_source get_stop_source()noexcept;[[nodiscard]] stop_token get_stop_token()constnoexcept;bool request_stop()noexcept; // specialized algorithmsfriendvoid swap(jthread& lhs, jthread& rhs)noexcept; // static members[[nodiscard]]staticunsignedint hardware_concurrency()noexcept; private: stop_source ssource;// exposition only};}
[edit]Class std::thread::id
namespace std {class thread::id{public: id()noexcept;}; bool operator==(thread::id x, thread::id y)noexcept; strong_ordering operator<=>(thread::id x, thread::id y)noexcept; template<class charT, class traits> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, thread::id id); // hash supporttemplate<class T>struct hash;template<>struct hash<thread::id>;}