高性能服务器程序框架--不断补充,欢迎交流

来源:互联网 发布:hugo这家淘宝店正吗 编辑:程序博客网 时间:2024/03/29 16:25
8.3 i/o模型
1. 阻塞i/o

2. 非阻塞i/o:事件未发生就返回,不等待
事件未发生的返回值和出错的返回值一样,都是-1,所以需要通过erron做进一步的确认
accept,recv,send 事件未发生errrno=EAGAIN或EWOULDBLOCK(再一次)
connect    errno=EINPROGRESS

3. 阻塞是会影响性能,非阻塞i/o + i/o通知机制(i/o复用SIGIO信号)
   要使用SIGIO信号需要先用fcntl将描述符和进程绑定,还要设置O_ASYNC标志

4. 同步i/o:向应用程序通知i/o事件发生了,就绪了
   异步i/o:向应用程序通知i/o事件已经完成
   i/o事件:有数据可读或是可写
   前3种是同步,后一种是异步
   阻塞I/O
   I/O复用
   SIGIO信号
   异步I/O


8.4 两种高效的事件处理模式
1. 需要处理的事件:I/O事件,信号事件,定时事件
2. 计算密集型和i/o密集型

8.5 两种高效的并发模式
1. i/o模型中的同步异步
2. 并发模式中的同步
3. 相对普通的半同步/半异步模式,高效的半同步/半异步模式高效在于用管道替代了队列。前面是多个工作线程共享一个队列(需上锁),后者给每个工作线程创建一个管道


8.7 
1. 内存池:系统初始化的时候分配,但是分配多少是个问题。
2. 连接池:连接上的连接用完之后不关闭,下次不用再连接,直接用
3. 零拷贝:发送文件给客户端,用sendfile,不经过内核。大数据用共享内存
4. 上下文切换: 就是进程之间或是线程之间的切换
5. 锁:注意锁的粒度
0 0
原创粉丝点击