私のコードの簡略版は次のようになります。
class threadCreator
{
void threadFunction(void){
// use some private data members and do something.
}
void createThread(void){
boost::thread myThread(
boost::bind(&threadCreator::threadFunction,this));
myThread.detach();
}
}
このプログラムは、スレッドで detach メソッドを呼び出しても、スレッドの実行が完了するのを待ってから終了します。クラスを削除して、関数内だけでスレッドを作成すると、これは期待どおりに機能するようです。
オブジェクトがまだメモリに残っていることに関係があると思います。ただし、私は C++ の学習者であり、これを解決する方法がわかりません。