
使用教程-ad7799中文版
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
6.4 使用教程
本节旨在介绍muduo网络库的使用方法,具体内容将在后续章节详细阐述。需要指出的是,在第8章将会详细介绍其设计与实现细节。
值得注意的是,muduo网络库仅支持Linux 2.6.x下的非阻塞并行TCP网络编程。其核心机制是将每个IO线程划分为一个事件循环,并将其相关的IO事件转发给回调函数处理。
编写muduo网络库的目的之一在于简化普通TCP网络编程的工作流程,使程序员能够专注于业务逻辑的实现,而无需与Socket API频繁交互。正如Brooks所言11,“我希望muduo能减少网络编程中的偶发复杂性(accidental complexity)。”
6.4.1 TCP网络编程本质论
基于事件驱动的非阻塞网络编程是非阻塞并行服务程序编写的主要模式之一,初次接触这种编程方式可能会要求转变思维方式。与传统的主动调用recv(2)接收数据、主动调用accept(2)处理新连接以及主动调用send(2)发送数据的方法不同,在muduo网络库中,我们将采用注注册回调函数的方式进行操作:当网络库收到数据时会自动调用相关回调函数;接受新连接时也会直接传递给回调函数。需要发送数据的时刻则可以简单地向连接体写入数据,而网络库会负责无阻塞地发送出去。
这种编程方式类似于Windows消息循环的工作原理,在消息循环中避免阻塞以确保窗口响应正常,同样在事件处理函数中也需要保持非阻塞状态,以保证网络服务能够持续运行。
从本质层面上讲,TCP网络编程可以归结为三个半事件的处理:
1. 连接建立阶段:包括服务端主动接受新连接和客户端成功发起connect操作。一旦连接建立,双方角色对等,均可进行收发数据的操作。
2. 连接断开阶段:包括主动关闭(close、shutdown)以及被动终止(read(2)返回0)。此外,信号量也可通过signalfd(2)融入EventLoop系统中,在muduo-protorpc示例中可观察到其实际应用11。链接参考文献:http:www.cs.nott.ac.uk~cahG51ISSDocumentsNoSilverBullet.html Linux多线程服务端编程:使用muduo C++网络库 (excerpt) http:www.chenshuo.combook
全部评论 (0)


