boost::asio async_read_some向io_service的Op_queue投递任务的部分信息

 

boost::ip::tcp::socket的async_read_some后面会调用socket的成员变量stream_socket_service的成员函数async_receive,并在该函数内为本次read请求分配 一个OP:reactive_socket_recv_op,这个op会先尝试直接读取read缓冲区,如果没有信息读,将把该 OP放入socket的成员变量descriptor_state中,该OP中包含了在监听听相关网络事件后要执行的函数及客户上层传入的回调函数on_read_handled();

在epoll_wait监听到网络事件后,会将当时注册epoll时通过epoll_event传入的descriptor_state指针放入该线程的私有队列中,并最后把该descriptor_state指针放入task_io_service的公共队列op_queue中,唤醒一个空闲线程来执行operation->complete函数

posted @ 2018-09-18 20:44  郭流水  阅读(385)  评论(0编辑  收藏  举报