void work() { try { m_rou(pstade::perfect<void>( boost::lambda::bind(&self_t::yield, this, boost::lambda::_1) )); } catch (exit_exception const&) { } boost::mutex::scoped_lock lock(m_mutex); m_status.set(is_end::value); m_cond.notify_one(); }