Sorry if this is a repost... my Google Groups doesn't seem to be loading my post from yesterday.
Maybe I'm missing something but, why is it a requirement for derived classes to call thread_.join()? You have it in the destructor of your base class, and this will be called after the derived class' destructor executes.
http://www.parashift.com/c++-faq-lit...html#faq-11.12