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;
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 ?
获得本线程per-thread的读写缓冲区并设置好读写缓冲区内请求头、请求体、响应头的地址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;
按mcpack协议将响应体打包并根据最终响应体内容更新响应头mc_pack_close(outpack);outhead-body_len = mc_pack_get_size(outpack);
void *_xpool_main(void *param)
如果全局ub server结构体仍然处于运行状态while (sev-run)
主循环每一次循环处理不同链接
0 条评论
下一页