##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::thread::joinable

From cppreference.com
< cpp‎ | thread‎ | thread

bool joinable() const; |  | (since C++11)

Checks if the 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.

### [edit] Parameters

(none)

### [edit] Return value

true if the thread object identifies an active thread of execution, false otherwise

### [edit] Exceptions

`noexcept` specification:
noexcept

### [edit] Example

Run this code

    #include <iostream>
    #include <thread>
    #include <chrono>

    void foo()
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    int main()
    {
        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();
    }

Output:

    before starting, joinable: 0
    after starting, joinable: 1

### [edit] See also

get_id | returns the id of the thread (public member function) [edit]
join | waits for a thread to finish its execution (public member function) [edit]
detach | permits the thread to execute independently from the thread handle (public member function) [edit]

### [edit] References

- C++11 standard (ISO/IEC 14882:2011):

  - 30.3.1.5 thread members [thread.thread.member]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/thread/thread/joinable&oldid=66492"