class io_context
: public execution_context
execution_context是io_context的基类,表示函数对象执行的上下文。
execution_context代表函数对象执行的位置。
execution_context和services
(1) execution_context实现一个可拓展的,类型安全的,services多态集合,通过service type 索引。
(2) services 用于管理用于跨execution_context共享的资源。例如,timers可能的通过单个timer队列实现,该队列被保存在一个service中
通过模板函数use_service(), add_service(), has_service()访问exection_context对象的services
调用use_service<Service>(),类型参数Service用于选择service使得全部的成员变得可使用。 如果service在execution_context中不存在,则类型为Service的对象将被创建并且加入到exection_context中。通过has<service<Service>()检查exection_context是否实现对应的Service。
Service对象可以通过显示调用模板函数add_service<Service>()添加到exection_context中。如果Service已经存在则抛出service_already_exists异常。如果service的拥有者和exection_context参数不是相同的对象则抛出invalid_service_owner异常。
通过调用user_service<>()获取exec