Linux并发模型
来源:互联网 发布:网络歌手受排挤 编辑:程序博客网 时间:2024/05/02 04:36
Linux并发模型
目前可以实现并发程序的方法有Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型、Epoll模型。
各种模型优缺点
Apache模型和TPC模型是最容易理解的,Apache模型在并发上是通过多进程实现的,而TPC模型是通过多线程实现的,但是这种方式在大量进程/线程切换时会造成大量的开销。
select模型是通过一种轮询机制来实现的。需要注意:
- Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024.
- 操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍,这样效率就会呈现线性下降,把FD_SETSIZE改大的后果就是,"大家都慢慢来,什么?都超时了?".
- 内核/用户空间的信息交换-> 内存拷贝
poll模型与select类似,也是通过轮询来实现,但它与select模型的区别在于Socket数量没有限制。
Epoll模型在poll模型的基础之上不使用轮询,而使用基于内核提供的反射模式。
- 有“活跃Socket”时,内核访问该Socket的callback.
- 内核/用户空间信息交换->通过共享内存
不同场景的应用情况
目前用的比较多的就是Apache、Nginx、Lighttpd. Apache的占有率是最高是毋庸置疑的,但它主要是采用select模式开发。
当前主流的异步web服务器Lighttpd和Nginx都是基于Epoll的。它们具有非常好的架构,可以运行在简单的web集群中。但在数据结构、内存管理都多个细节方面处理nginx考虑更加完善。nginx从event、跨平台、基础数据结构都很多细节方面进行了考虑和优化。nginx必定是未来的apache,未来的主流。
参考:
http://bbs.linuxpk.com/thread-43628-1-1.html
http://blog.csdn.net/sparkliang/article/details/4770655
http://stblog.baidu-tech.com/?p=755
- Linux并发模型
- linux并发服务器模型设计
- linux网络编程:并发服务器的模型
- Linux 下TCP并发服务器设计模型
- linux 高并发socket通信模型
- linux下epoll模型accept并发问题
- linux多进程并发服务模型
- linux 高并发socket通信模型
- linux网络编程:并发服务器的模型
- C++ linux epoll并发服务器模型初探
- linux 高并发socket通信模型
- Linux网络编程并发服务器模型
- linux网络编程:并发服务器的模型
- linux 高并发socket通信模型
- linux下epoll模型accept并发问题
- 并发模型
- 并发模型
- 并发模型
- *运项目1.0
- thinkphp模板输出cookie,session中的值
- 分数累加
- 第九周项目三输出星号图1
- 星际译王
- Linux并发模型
- poj 3254 Corn Fields
- 黑马程序员---C语言数组与字符串
- 实现一个数字电路的脚本解释器(三)——SymbolList的实现
- Cookie的赋值和删除
- 计算机视觉领域的一些牛人博客,研究机构等的网站链接 && 机器学习算法中文视频教程
- Dynamic Programming: From novice to advanced
- TI官方DM8168 / DM6446 EVM板电源电路
- Android 机顶盒设备生产自检程序(USB设备测试)