浅谈网络编程

本文回顾了作者六年Unix经验中网络编程的发展历程,从多进程到多线程,最终聚焦于单进程非阻塞I/O多路复用技术。该技术通过避免传统顺序模型中的阻塞点,实现了对多个I/O描述符的高效监听与处理,是实现高性能服务器的核心。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值