std::jthread:: joinable
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
|
jthread::joinable
|
||||
| Operations | ||||
| Stop token handling | ||||
| Non-member functions | ||||
|
bool
joinable
(
)
const
noexcept
;
|
(自 C++20 起) | |
检查
std::jthread
对象是否标识一个活跃的执行线程。具体来说,当
get_id
(
)
!
=
std
::
jthread
::
id
(
)
时返回
true
。因此默认构造的
jthread
不可结合。
一个已执行完代码但尚未被连接的线程仍被视为活动执行线程,因此是可连接的。
目录 |
参数
(无)
返回值
若
std::jthread
对象标识一个活跃的执行线程,则为
true
;否则为
false
。
示例
#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'; }
输出:
before starting, joinable: false after starting, joinable: true after joining, joinable: false after detaching, joinable: false
参考文献
- C++23 标准 (ISO/IEC 14882:2024):
-
- 33.4.4.3 成员函数 [thread.jthread.mem]
- C++20 标准 (ISO/IEC 14882:2020):
-
- 32.4.3.2 成员函数 [thread.jthread.mem]
参见
|
返回线程的
标识符
(公开成员函数) |
|
|
等待线程完成执行
(公开成员函数) |
|
|
允许线程独立于线程句柄执行
(公开成员函数) |