boost::threadとstd:functionとか
#include <iostream> #include <boost/thread.hpp> #include <Windows.h> using namespace std; int main() { // Aスレッド起動 boost::thread thr( [](){ // Aスレッド内でBスレッド起動 boost::thread thr( [](){ for(size_t i=0;i < 100; ++i){ cout << "B"; Sleep(100); } } ); for(size_t i=0;i < 100; ++i){ cout << "A"; Sleep(100); } // Bスレッドの終了待ち thr.join(); }); // Aスレッドの終了待ち thr.join(); cout << "おわり" << endl; return 0; }
出力結果
BABABABABABAABBABABABABABABABABAABABABABBABABABAABBABABABABABABABABABABAABBABABA BAABBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA BABABABABABABABABABABABABABABABABABABABAおわり
ラムダ式をブチ込むのは良いんだけども、やっぱり外部から終了させられないってダメよね。
std::functionと終了処理とかをメンバに持つ関数オブジェクトで包むといいのかな。