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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值