Boost Asio总结 io_service

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boost Asio总结 io_service相关的知识,希望对你有一定的参考价值。

io_service类代表了系统里的异步处理机制(如epoll),必须在asio库里的其他对象之前初始化,其他对象则向io_service提交异步操作handler。

typedef io_context io_service;

class io_context
  : public execution_context

private:
  typedef detail::io_context_impl impl_type;
#if defined(BOOST_ASIO_HAS_IOCP)
  friend class detail::win_iocp_overlapped_ptr;
#endif

public:
  class executor_type;
  friend class executor_type;

#if !defined(BOOST_ASIO_NO_DEPRECATED)
  class work; //有work在进行
  friend class work; //内部的线程类
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)

  class service;

#if !defined(BOOST_ASIO_NO_EXTENSIONS)
  class strand;
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)

  BOOST_ASIO_DECL count_type run(); //阻塞执行事件循环
  BOOST_ASIO_DECL count_type run_one();//至少阻塞执行一个handler

  BOOST_ASIO_DECL count_type poll();//非阻塞,执行ready的handler
  BOOST_ASIO_DECL count_type poll_one();//至少执行一个ready的handler

  BOOST_ASIO_DECL void stop();//停止事件循环
  BOOST_ASIO_DECL bool stopped() const;//事件循环是否已经停止
  void reset();//重启事件循环

 //异步执行一个handler
  template <typename LegacyCompletionHandler>
  BOOST_ASIO_INITFN_RESULT_TYPE(LegacyCompletionHandler, void ())
  dispatch(BOOST_ASIO_MOVE_ARG(LegacyCompletionHandler) handler);

 //异步执行一个handler
  template <typename LegacyCompletionHandler>
  BOOST_ASIO_INITFN_RESULT_TYPE(LegacyCompletionHandler, void ())
  post(BOOST_ASIO_MOVE_ARG(LegacyCompletionHandler) handler);




以上是关于Boost Asio总结 io_service的主要内容,如果未能解决你的问题,请参考以下文章

Boost Asio总结同步通信

Boost Asio总结异步通信

Boost::Asio : io_service.run() vs poll() 或者我如何在主循环中集成 boost::asio

boost::asio::io_service类

boost::asio::io_service 运行方法阻塞/解除阻塞时感到困惑

C++ boost::asio::io_service创建线程池thread_group简单实例