void core::run() { std::thread accept_thread(std::bind(&core::accept, this)); std::thread render_thread(std::bind(&core::render_impl, this)); try { while(m_running) { while(generic_pool_t::global().poll()) ; m_reader(m_workers); m_pinger(m_workers); m_stat_collector(m_workers); render(); std::this_thread::sleep_for(std::chrono::milliseconds(100)); } } catch(std::exception const &e) { log_system("core exception: %%", e.what()); m_running = false; /* Wake up the render thread. */ render(); accept_thread.detach(); render_thread.join(); } /* TODO: shared::thread for more RAII. */ if(accept_thread.joinable()) { accept_thread.detach(); } if(render_thread.joinable()) { render_thread.join(); } }
bool Server::init() { std::cout << "init..." << std::endl; std::thread accept_thread(); //Version ver = this->getVersion(); //std::cout << "version:" << ver.version << " major:" << ver.v.major_version << " minor:" << ver.v.minor_version << std::endl; return true; }