驚いたことに、C++11 の std::thread オブジェクトの実行は終了したが、まだ結合されていない場合でも、アクティブな実行スレッドと見なされます。これは、次のコード例 (g++ 4.7.3 を使用する Xubuntu 13.03 で構築) に示されています。C++11 標準が std::thread オブジェクトがまだアクティブにコードを実行しているかどうかを検出する手段を提供しているかどうかを知っている人はいますか?
#include <thread>
#include <chrono>
#include <iostream>
#include <pthread.h>
#include <functional>
int main() {
auto lambdaThread = std::thread([](){std::cout<<"Excuting lambda thread"<<std::endl;});
std::this_thread::sleep_for(std::chrono::milliseconds(250));
if(lambdaThread.joinable()) {
std::cout<<"Lambda thread has exited but is still joinable"<<std::endl;
lambdaThread.join();
}
return 0;
}