use boost::thread_specific_ptr