bool core_logic::is_player_there() const { boost::scoped_lock lock(player_mtx_); return !ctx_.empty(); } // This function blocks the thread... void core_logic::wait_for_players() { boost::unique_lock lock(player_mtx_); is_betting_done_.wait(lock, boost::bind(&core_logic::is_player_there, this) ); }