2021.08.04笔记

epoll水平触发边缘触发

水平触发LT:可以理解为一直就绪,跟键盘一直按着一样,一直按着一个键就会一直输出该键的键值,LT模式只要是缓冲区没有满就会一直写,只要是缓冲区不为空就会一直读

边缘触发ET:可理解为单次触发,接收到数据只读一次,缓冲区里有数据,就写一次。

LT的处理过程:
. accept一个连接,添加到epoll中监听EPOLLIN事件
. 当EPOLLIN事件到达时,read fd中的数据并处理
. 当需要写出数据时,把数据write到fd中;如果数据较大,无法一次性写出,那么在epoll中监听EPOLLOUT事件
. 当EPOLLOUT事件到达时,继续把数据write到fd中;如果数据写出完毕,那么在epoll中关闭EPOLLOUT事件

ET的处理过程:
. accept一个一个连接,添加到epoll中监听EPOLLIN|EPOLLOUT事件
. 当EPOLLIN事件到达时,read fd中的数据并处理,read需要一直读,直到返回EAGAIN为止
. 当需要写出数据时,把数据write到fd中,直到数据全部写完,或者write返回EAGAIN
. 当EPOLLOUT事件到达时,继续把数据write到fd中,直到数据全部写完,或者write返回EAGAIN

c++与c区别

首先面向对象和面向过程的区别就挺大的,首先思路就不一样,c语言支持的是 C89 标准,c++支持C99,c++11,14,15等。很多用法很不一样,

1、c语言函数参数不行有默认值,但是c++就行,但是参数默认值要在参数列表中最右边

int func(int a = 1,int b);//这样不行
int func(int a,int b = 2,int c = 3);//可以

2、c语言变量的声明必须在语句的前面,c++随意在任何地方定义变量。

3、c语言中空结构体没有占用空间,但是c++有占有一个字节,来区别与别的结构体不同。

4、c语言不支持函数重载,c++支持

5、malloc、free和new、delete区别

6、C语言中作用域只有两个:局部,全局。C++中则是有:局部作用域,类作用域,名字空间作用域三种。

7、c++面向对象 封装 继承 多态

posted @ 2021-08-04 21:42  爱吃鱼的小女孩  阅读(35)  评论(0编辑  收藏  举报