Linux多线程服务器 ---- 优化

例1 使用多线程提高响应速度

假设我们有一个类似计算器的服务,输入数字公式,返回相应的结果,如果无解,返回“NULL\r\n”。

假设小明在很短的时间内发出10个请求,如果用单线程来一个处理一个,那么这些请求会在队列里依次处理。假设一个请求响应时间是10ms,那么第二个请求响应时间将会为20ms(等第一个请求执行完才执行第二个)。那么第十个请求响应时间为100ms。那么这10个请求的平均响应时间为55ms。

ok,采用多线程:1个主线程,10个计算线程。主线程将请求分别分配给10个计算线程,那么这10个请求的平均响应时间将为10ms。很显然,比单线程快了不少。

例2 IO和“计算”相互重叠

基本思路:无论是磁盘IO还是网络IO,只要涉及到IO,那都是比较慢的,那么就可以将IO操作交给别的线程去去做,自己不必久等待。

采用同步方式会降低性能,因为:

  • 文件操作比较慢,服务器会等在IO上,此时CPU闲置,增加响应时间。
  • 如果用buffer。多线程一起写,为了保证线程安全,要加锁。加锁会让多个线程互相等待,降低并发性。

解决方法:单独开一个线程来负责写磁盘文件。别的线程写日志,只需要将消息准备好,然后交给queue,基本不用等待,降低了服务器响应时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值