当前位置:项目开发->项目经验 ->云平台开发架构分析系列3:libuv包装服务类回调机制分析

原创版权标志云平台开发架构分析系列3:libuv包装服务类回调机制分析

作者:codexia  发表时间:2017/6/19 9:02:24  阅读:
[摘要] 在本系列文章的前两篇分析中,我已经将云平台架构的整体结构和技术架构都做了分析。现在进入具体的技术分析阶段。我们这里就是要对封装了libuv库的服务类进行分析,让你掌握封装服务类的用法。
   在本系列文章的前两篇分析中,我已经将云平台架构的整体结构和技术架构都做了分析。现在进入具体的技术分析阶段。
    TCP服务器通信是建立在libuv库之上的。然而你可以不用了解libuv就可以用。因为我们已经将libuv进行了封装,所以可以不必太关注libuv库。不过,学习libuv当然是非常有帮助的。你可以通过我们包装的服务类先快速上手。
    我们这里就是要对封装了libuv库的服务类进行分析,让你掌握封装服务类的用法。源码在C++技术网都分享了,请看《libuv服务器端包装类源代码分享(修正Linux服务器连续死循环版)》。
    下面开始分析这个类。在文章最后会贴出来我制作的流程示意图。在看分析时,你可以先将网站上分析的代码对着看哦,效果会更好。
    程序开始于main函数,在main函数中也只是构建了服务类对象,也就是我这里分析的这个类的类对象,类名为CTcpServer。然后就会调用这个函数的Start成员函数。然后就开始了TCP服务程序的流程了。
    在开始铺开之前,还要说明调用和回调的区别。调用是进行顺序流程的执行,只是执行权进入了被调用的函数。而回调则不一样。回调的函数作为函数的一个参数,传入函数内部的某个函数指针变量。当前函数会继续往后执行。然后经过一系列的执行流程后,内部的函数指针执行了被传入的函数,才开始调用函数。所以调用函数是马上就会执行的,而回调则不是。当然还有其他方面的区别,就不再此展开。
    Start函数会调用下面几个函数,来完成服务程序的启动:
init()
bind()
listen()
run()
    写过TCP Socket编程的同学都很熟悉吧。这个虽然是包装了libuv的类,但是基本流程肯定还是TCP socket的模式。所以有bind函数来绑定地址,有listen函数来监听端口。我这里只是写示意,没有写参数等。然而并不是监听之后流程就停止了。这里执行到listen时,程序并没有真正的跑动起来。这也是libuv包装后的逻辑。当然,这几个函数...【登录后阅读更多内容】
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)