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 : io_service.run() vs poll() 或者我如何在主循环中集成 boost::asio