Namespaces
Variants

std::jthread:: joinable

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
bool joinable ( ) const noexcept ;
(seit C++20)

Prüft, ob das std::jthread -Objekt einen aktiven Ausführungsthread identifiziert. Gibt spezifisch true zurück, falls get_id ( ) ! = std :: jthread :: id ( ) . Somit ist ein standardkonstruierter jthread nicht joinable.

Ein Thread, der die Ausführung des Codes beendet hat, aber noch nicht gejoined wurde, wird immer noch als aktiver Ausführungsthread betrachtet und ist daher joinable.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

true wenn das std::jthread -Objekt einen aktiven Ausführungs-Thread identifiziert, false andernfalls.

Beispiel

#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::jthread t;
    std::cout << "before starting, joinable: " << t.joinable() << '\n';
    t = std::jthread{foo};
    std::cout << "after starting, joinable: " << t.joinable() << '\n';
    t.join();
    std::cout << "after joining, joinable: " << t.joinable() << '\n';
    t = std::jthread{foo};
    t.detach();
    std::cout << "after detaching, joinable: " << t.joinable() << '\n';
}

Ausgabe:

before starting, joinable: false
after starting, joinable: true
after joining, joinable: false
after detaching, joinable: false

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 33.4.4.3 Memberfunktionen [thread.jthread.mem]
  • C++20-Standard (ISO/IEC 14882:2020):
  • 32.4.3.2 Memberfunktionen [thread.jthread.mem]

Siehe auch

gibt die id des Threads zurück
(öffentliche Elementfunktion)
wartet auf die Beendigung der Thread-Ausführung
(öffentliche Elementfunktion)
erlaubt dem Thread die unabhängige Ausführung vom Thread-Handle
(öffentliche Elementfunktion)