欢迎来到天天文库
浏览记录
ID:34958359
大小:373.90 KB
页数:16页
时间:2019-03-15
《多线程服务器的常用编程模型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、多线程服务器的常用编程模型陈硕(giantchen_AT_gmail)Blog.csdn.net/Solstice2009Feb12本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型,归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序。文中的“多线程服务器”是指运行在Linux操作系统上的独占式网络应用程序。硬件平台为Intelx64系列的多核CPU,单路或双路SMP服务器(每台机器一共拥有四个核或八个核,十几GB内存),机器之间用百兆或千兆以太网连接。这大概是目
2、前民用PC服务器的主流配置。本文不涉及Windows系统,不涉及人机交互界面(无论命令行或图形);不考虑文件读写(往磁盘写log除外),不考虑数据库操作,不考虑Web应用;不考虑低端的单核主机或嵌入式系统,不考虑手持式设备,不考虑专门的网络设备,不考虑高端的>=32核Unix主机;只考虑TCP,不考虑UDP,也不考虑除了局域网络之外的其他数据收发方式(例如串并口、USB口、数据采集板卡、实时控制等)。有了以上这么多限制,那么我将要谈的“网络应用程序”的基本功能可以归纳为“收到数据,算一算,再发出去”。在这个简
3、化了的模型里,似乎看不出用多线程的必要,单线程应该也能做得很好。“为什么需要写多线程程序”这个问题容易引发口水战,我放到另一篇博客里讨论。请允许我先假定“多线程编程”这一背景。“服务器”这个词有时指程序,有时指进程,有时指硬件(无论虚拟的或真实的),请注意按上下文区分。另外,本文不考虑虚拟化的场景,当我说“两个进程不在同一台机器上”,指的是逻辑上不在同一个操作系统里运行,虽然物理上可能位于同一机器虚拟出来的两台“虚拟机”上。本文假定读者已经有多线程编程的知识与经验,这不是一篇入门教程。本文承蒙MiloYip先
4、生审读,在此深表谢意。当然,文中任何错误责任均在我。目录1进程与线程.............................................................................................................................22典型的单线程服务器编程模型...................................................................................
5、..........33典型的多线程服务器的线程模型.........................................................................................3Oneloopperthread.............................................................................................................4线程池............
6、.....................................................................................................................4归纳.....................................................................................................................................54进程
7、间通信与线程间通信.....................................................................................................55进程间通信.............................................................................................................................66线程间同步........
8、.....................................................................................................................7互斥器(mutex).........................................................................
此文档下载收益归作者所有