X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/03b35a9a1bd1f583e32b27d260b223a0989d6c75..06282fd37814c4a9d53bca089b048709b368f5b3:/rpc/poll_mgr.cc diff --git a/rpc/poll_mgr.cc b/rpc/poll_mgr.cc index 83289a8..ebd61e1 100644 --- a/rpc/poll_mgr.cc +++ b/rpc/poll_mgr.cc @@ -59,9 +59,14 @@ poll_mgr::poll_mgr() : aio_(new SelectAIO()) { th_ = thread(&poll_mgr::wait_loop, this); } -poll_mgr::~poll_mgr() -{ +poll_mgr::~poll_mgr() { + shutdown(); +} + +void poll_mgr::shutdown() { lock ml(m_); + if (shutdown_) + return; for (auto p : callbacks_) aio_->unwatch_fd(p.first, CB_RDWR); pending_change_ = true; @@ -71,9 +76,7 @@ poll_mgr::~poll_mgr() th_.join(); } -void -poll_mgr::add_callback(int fd, poll_flag flag, aio_callback *ch) -{ +void poll_mgr::add_callback(int fd, poll_flag flag, aio_callback *ch) { lock ml(m_); aio_->watch_fd(fd, flag);