浅谈网络编程

最近不做后台工作了,感觉有必要总结下之前6年unix c中对网络编程的理解,不然慢慢地都忘记了。这里我们只说网络编程的核心,服务器端开发。服务器端最大问题是如果提高服务器的处理能力,由于长连接本身只适合客户端相对少且固定的情况,所以这里我们说下socket中短连接,下面总结下我接触过的几个大的阶段。

1.多进程阶段
主进程阻塞在accept中,fork子进程负责工作,工作完成后消亡,这种之前有接触的并发数控制在200以下
2.多线程阶段
利用线程池模式及信号量、互斥锁进行通讯等技术,并发量也不高。
3.单进程非阻塞I/O多路复用
之前的各种方法都有一个弊端,就是传统的顺序模型会产生一个阻塞,但是其实I/O本身处理的时间相比其他模块的未知处理时间完全可以忽略,利用unix内核提供的select等,同时监听多个描述符读写就绪状态,再加上非阻塞,实现在一个进程中,轮询处理各种I/O的进出,这也是目前主流高性能处理的核心技术,比如ngnix的核心就是非阻塞I/O多路复用,nodejs用的也是非阻塞机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值