io_context状态一直是stopped


#1

客户端:

  Fiber::start("echo client", []() {
    TcpConn conn;
    if (conn.connect("127.0.0.1", 8888))
      rlog("failed to connect to echoserver");
    auto bufptr = Buf::newbuf(512);
    auto &buf = *bufptr;
    //这里读,但是服务器不发数据,就一直挂着读操作。
    conn.asyncReadSome(buf);
  });

客户端主循环

while (true)
    {
      sleep(1000);
      auto n = ioc_.poll();
      dlog(ioc_.stopped()); //这里一直打印true
      // asio无法检测到什么时候结束。
    }

这里一直打印ioc_.stopped()为true,是什么鬼?

有人这样用过么?


#2

没人回,最后,我对所有io操作进行计数,共享一个shared_ptr,检测use_count,为1,就是有io操作,也没有正在执行的io操作。

配合自己程序的关闭逻辑,就能正常关闭程序。