ub_server_running_worker_thread_main_loop
2016-06-22 19:12:45 0 举报
`ub_server_running_worker_thread_main_loop` 是一个函数,它的主要作用是在服务器运行过程中,为每个工作线程提供一个主循环。这个函数通常用于处理客户端请求、执行任务和处理事件。在主循环中,工作线程会不断地检查是否有新的任务需要处理,如果有,就从任务队列中取出任务并执行。同时,工作线程还会检查是否有事件发生,如客户端连接、断开连接等,并根据事件类型执行相应的处理逻辑。通过这种方式,`ub_server_running_worker_thread_main_loop` 函数确保了服务器在运行时能够高效地处理各种任务和事件。
作者其他创作
大纲/内容
return ret;
rpc_server_log_pack(\"input\
static int rpc_handle_callback()
创建本thread专用epolldata-epfd = xpool_epoll_create();
执行内层回调函数真正处理本次请求sev-cb_drastic();
Y
按长连接处理,继续循环等待处理同一链接上的下个请求
执行外层回调函数真正地处理本次请求sev-cb_native() == 0
按短链接处理,关闭本次链接回到主循环,等待处理新的链接
获取本线程的per-thread数据结构ub_server_pdata_t *data = (ub_server_pdata_t *)param;set_pthread_data(data);
N
内循环每次循环处理同一链接的不同请求
全局ub server结构体仍然处于运行状态while (sev-run)
server处理链接类型是否只处理短链接?UBSVR_SHORT_CONNECT ?
是否有事件?ret 0 ?
nshead_t *inhead = (nshead_t *)in;nshead_t *outhead = (nshead_t *)out;mc_pack_t *inpack = (mc_pack_t *)(inhead + 1);mc_pack_t *outpack = NULL;
do ...
获取本线程per-thread的读写缓冲区地址和大小nshead_t *req = (nshead_t *)ub_server_get_read_buf();int reqsiz = ub_server_get_read_size();nshead_t *res = (nshead_t *)ub_server_get_write_buf();int roto = ub_server_get_read_timeout();int wtto = ub_server_get_write_timeout();
int default_native()
return 0;
mc_pack_close(outpack);outhead-body_len = mc_pack_get_size(outpack);rpc_server_log_pack(\"output\
void *_xpool_main(void *param)
如果全局ub server结构体仍然处于运行状态while (sev-run)
主循环每一次循环处理不同链接
0 条评论
下一页