Thread::joinable是C++ std::thread中的內置函數。它是一個觀察器函數,表示它觀察狀態,然後返回相應的輸出並檢查線程對象是否可連接。
如果線程對象標識/表示執行中的活動線程,則稱該線程對象是可連接的。
在以下情況下,線程不可聯接:
- 它是默認構造的
- 如果其成員join或detach中的任何一個已被調用
- 它已移至其他地方
用法:
std::thread::joinable()
參數:該函數不接受任何參數。
返回值:這是一個布爾型函數,當線程對象為
可加入的。如果線程對象不可連接,則返回false。
以下程序演示了std::thread::joinable(的用法
注意:在在線IDE上,該程序將顯示錯誤。要對此進行編譯,請借助命令“ g ++ -std = c ++ 14 -pthread file.cpp”在g ++編譯器編譯中使用標誌“-pthread”。
// C++ program to demonstrate the use of
// std::thread::joinable()
#include <chrono>
#include <iostream>
#include <thread>
using namespace std;
// function to put thread to sleep
void threadFunc()
{
std::this_thread::sleep_for(
std::chrono::seconds(1));
}
int main()
{
std::thread t1; // declaring the thread
cout << "t1 joinable when default created? \n";
// checking if it is joinable
if (t1.joinable())
cout << "YES\n";
else
cout << "NO\n";
// calling the function threadFunc
// to put thread to sleep
t1 = std::thread(threadFunc);
cout << "t1 joinable when put to sleep? \n";
// checking if t1 is joinable
if (t1.joinable())
cout << "YES\n";
else
cout << "NO\n";
// joining t1
t1.join();
// checking joinablity of t1 after calling join()
cout << "t1 joinable after join is called? \n";
if (t1.joinable())
cout << "YES\n";
else
cout << "NO\n";
return 0;
}
輸出:
t1 joinable when default created? NO t1 joinable when put to sleep? YES t1 joinable after join is called? NO
注意:第三個輸出將在1秒鍾後出現,因為該線程已進入睡眠狀態1分鍾。
相關用法
- C++ Thread hardware_concurrency()用法及代碼示例
- C++ Thread get_id()用法及代碼示例
- C++ fma()用法及代碼示例
- C++ log()用法及代碼示例
- C++ div()用法及代碼示例
- C++ ios eof()用法及代碼示例
- C++ map key_comp()用法及代碼示例
- C++ ios bad()用法及代碼示例
- C++ regex_iterator()用法及代碼示例
注:本文由純淨天空篩選整理自Kushagra7744大神的英文原創作品 Thread joinable() function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。