# Standard library header <thread>

From cppreference.com
< cpp‎ | header

This header is part of the thread support library.

### Classes

thread (C++11) | manages a separate thread (class)

### Functions

std::swap(std::thread) (C++11) | specializes the std::swap algorithm (function template)
operator==operator!=operator< operator<= operator> operator>= | compares two `thread::id` objects (function)
operator<< | serializes a `thread::id` object (function template)
std::hash<std::thread::id> | specializes std::hash (class template specialization)

### Namespaces

`this_thread` | provide functions that access the current thread of execution

##### Functions

Defined in namespace `std::this_thread`
yield (C++11) | suggests that the implementation reschedule execution of threads (function)
get_id (C++11) | returns the thread id of the current thread (function)
sleep_for (C++11) | stops the execution of the current thread for a specified time duration (function)
sleep_until (C++11) | stops the execution of the current thread until a specified time point (function)

### Synopsis

    namespace std {
        class thread;

        void swap(thread& x, thread& y) noexcept;

        bool operator==(thread::id x, thread::id y) noexcept;
        bool operator!=(thread::id x, thread::id y) noexcept;

        bool operator<(thread::id x, thread::id y) noexcept;
        bool operator<=(thread::id x, thread::id y) noexcept;
        bool operator>(thread::id x, thread::id y) noexcept;
        bool 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);

        template <class T> struct hash;
        template <> struct hash<thread::id>;

        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);

        }
    }

#### Class std::thread

    class thread {
     public:
        // types:
        class id;
        typedef /*implementation-defined*/ native_handle_type;

        // 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;

        // members:
        void swap(thread&) noexcept;
        bool joinable() const noexcept;
        void join();
        void detach();
        id get_id() const noexcept;
        native_handle_type native_handle();

        // static members:
        static unsigned hardware_concurrency() noexcept;
    };

#### Class std::thread::id

    class thread::id {
     public:
        id() noexcept;
    };

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/thread&oldid=105188"