A Cooperatively Interruptible Joining Thread
std::jthread
stands for joining thread. In addition to std::thread
from C++11, std::jthread
can automatically join the started thread and signal an interrupt. Its characteristics are described in the proposal P0660R8: A Cooperatively Interruptible Joining Thread.
Automatically Joining
Here is the non-intuitive behaviour of std::thread
. If a std::thread
is still joinable, std::terminate
is called in its destructor. A thread thr
is joinable if either thr.join()
nor thr.detach()
was called.
std::thread
// threadJoinable.cpp
#include
<iostream>
#include
<thread>
int
main
(){
std
::
cout
<<
std
::
endl
;
std
::
cout
<<
std
::
boolalpha
;
std
::
thread
thr
{[]{
std
::
cout
<<
"Joinable std::thread"
<<
std
::
endl
;
}};
std
::
cout
<<
"thr.joinable(): "
<<
thr
.
joinable
()
<<
std
::
endl
;
std
::
cout
<<
std
::
endl
;
...