    // do not remove channel, since we're in EventLoop::dtor();
    for (TimerList::iterator it = timers_.begin();
        it != timers_.end(); ++it)
-@@ -122,19 +71,26 @@ TimerId TimerQueue::addTimer(const TimerCallback& cb,
+@@ -129,11 +78,19 @@ void TimerQueue::cancel(TimerId timerId)
  void TimerQueue::scheduleInLoop(Timer* timer)
  {
    loop_->assertInLoopThread();

 }
 
 }
@@ -88,19 +44,12 @@ using namespace muduo::net::detail;
 
 TimerQueue::TimerQueue(EventLoop* loop)
   : loop_(loop),
-    timerfd_(createTimerfd()),
-    timerfdChannel_(loop, timerfd_),
     timers_()
 {
-  timerfdChannel_.setReadCallback(
-      boost::bind(&TimerQueue::handleRead, this));

-  Channel timerfdChannel_;
-  // Timer list sorted by expiration
   TimerList timers_;
 
   // for cancel()
diff --git a/muduo/net/poller/EPollPoller.cc b/muduo/net/poller/EPollPoller.cc
--- a/muduo/net/poller/EPollPoller.cc
+++ b/muduo/net/poller/EPollPoller.cc
