muduo基础库

muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构,包含基础库如Timestamp、Atomic、Thread等,还有异步日志、线程池、线程本地存储等组件,提供简单的API来降低网络编程复杂度。
摘要由CSDN通过智能技术生成

muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。

为什么需要网络库

使用Sockets API进行网络编程是一件简单地技术,但是高级语言的Sockets库并没有对Sockets API提供更高层次的封装,直接用它编写网络程序很容易掉到陷阱里,因此需要网络库来降低开发难度,网络库的价值还在于能方便地处理并发连接。

library和framework的区别

1.库是将代码集合成的一个产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库也叫函数库。

在函数库中的可直接使用的函数叫库函数。开发者在使用库的时候,只需要使用库的一部分类或函数,然后继续实现自己的功能。

框架则是为解决一个(一类)问题而开发的产品,框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。可以说,框架是库的升级版。开发者在使用框架的时候,必须使用这个框架的全部代码。

2.库中的类相对比较独立,我们编写应用的时候需要编写一些“胶水代码”来粘合。

框架是恶能够应用于特定领域的,不需要编写过多的“胶水代码”

3.框架与库的重要区别是:框架提供用户一些回调函数,使得框架能够调用我们所编写的回调函数,这就使得控制反转了

muduo库可以认为是一个小型框架。

Reactor模式

muduo库中有许多Event Loop(如果是单线程的话只有一个Event Loop),这个Event Loop实际上就是poll、epoll机制,是一个循环,在等待网络事件,如果网络事件触发,就回调我们的应用。

比如当一个客户端连接的时候,能够回调表示客户端已连接,那么客户端连接以后的一些具体操作,就可以在App中编写逻辑,当有数据到来的时候,muduo库能够回调有消息到来的对应函数,使得具体的业务逻辑可以在应用层进行编写,而不是把具体的业务放在库中编写。

 

面向对象的编程风格

muduo库只暴露具体类,不暴露抽象类,也不适用虚函数做接口

基于对象的编程风格

使用boost::function、boost::bind实现基于对象的编程风格

基础库

muduo/base目录是一些基础库,都是用户可见的类,可以在用户程序中直接使用。

base

AsyncLogging.(h,cc)                                       异步日志backend

Atomic.h                                                       原子操作与原子整数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值