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と終了処理とかをメンバに持つ関数オブジェクトで包むといいのかな。