- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?计算机网络编程?; 多进程实现并发(第11章)
多线程实现并发(第12章)
单线程实现并发(第13章);并发的面向连接的效劳器
采用算法8.4的最常用的效劳器设计
主效劳器进程在机器启动的时候自动一直运行,对每个客户的新连接创立一个新的从线程/进程进行处理
并发ECHO的例子
多进程〔每个进程含一个线程〕设计的并发效劳器
多线程〔属于同一个进程〕设计的并发效劳器
单线程设计的并发效劳器;功能:
客户翻开到某个效劳器的连接,然后在该连接上重复发送数据,并读取从效劳器返回的回显,
效劳器响应每个客户,接受连接,读取来自该客户的数据,并原样返回给客户。
效劳器在发送响应前并非读取全部输入,只是交替读写
效劳器在遇到文件结束的条件后,关闭连接;如果使用循环效劳器实现
某些客户可能发送大量的数据,导致其他的客户延迟
使用并发效劳器实现
防止了长时间的延迟,不允许单个客户占用所有的资源
使效劳器与许多客户同时进行通信
客户感觉效劳器提供了较短的响应时间;效劳器包括一个主进程,以及零个或者多个从进程。每个进程一个线程
主效劳器使用accept阻塞调用,节约CPU资源,连接到来的时候,accept马上返回。;#include语句
变量定义,宏定义,函数声明
主函数
参数处理
建立被动套接字
循环等待连接,如果有新连接,那么fork一个新的线程,调用TCPechod进行处理
TCPechod函数
处理echo效劳;使用fork的效劳器动态生成进程,可能导致不完全的进程终止
linux在一个子进程退出的时候,会给父进程一个信号〔signal)
正在退出的进程保持在死状态,直到父进程执行wait3系统调用为止
signal〔SIGCHLD,reaper)主效劳器进程收到子进程退出信号的时候,执行函数reaper
函数reaper调用函数wait3完成子进程的终止并退出。
参数WNOHANG指明wait3不要为了进程退出而阻塞等待;;一个进程中有一个或者多个线程
linux中的线程符合POSIX线程标准,1003.1c
linux中线程的特点
动态创立:pthread_create,具有上限
并发执行:多处理机上可以并行
抢先:系统自动在多个线程中调动CPU资源
私有局部变量:每个线程有自己的私有堆栈,存放局部变量
共享全局变量:一个进程的所有线程共享全局变量
共享文件描述符:一个进程内的所有线程共享一组文件描述符
协调和同步函数:具有线程协调和同步执行的函数;多线程的进程和单线程的进程比较
更高的效率:上下文切换的额外开销减少
上下文切换:线程切换需要执行的指令
同一进程中的两个线程比不同进程中的两个线程切换要快
进程内的线程切换不用改变虚拟存储器的映射
共享存储器:
并发效劳器中的多个副本需要相互通信或者访问共享的数据
利用线程容易构造监控系统;由于线程间共享存储器和进程状态,一个线程的动作可能对同一个进程内的其他线程产生影响。
两个线程如果同一时刻访问同一个变量,会产生相互干扰
将指针返回给一个静态的数据项的库函数不是线程平安(threadsafe)的,覆盖将会导致错误
缺乏健壮性,一个线程出错,效劳器将会终止整个进程;许多动态分配的资源都是和进程相关的
一个线程翻开某个文件,同一进程的其他线程也可以使用同一个描述符访问文件
虽然有些操作系统调用只会影响调用它的线程
I/O调用阻塞,只影响调用它的线程;
但是有些系统调用会影响整个进程
exit函数会让整个进程退出
线程的退出方法
线程的顶级过程返回时终止该线程
调用pthread_exit终止该线程;线程协调和同步是必要的
线程可能被阻塞。
线程的同步机制:互斥,信号量,条件变量
互斥
对共享数据的排他性访问
pthread_mutex_init,产生并初始化一个互斥
pthread_mutex_lock,使用共享数据前调用
pthread_mutex_unlock,使用共享数据后释放;信号量:同步机制
用于系统中有N个资源可用的情况允许N个线程同时执行使用
sem_init,初始化一个信号量
sem_wait,线程使用一个资源前必须调用
sem_post,使用完后返还资源;条件变量
最复杂和难以理解的一种同步机制
一组线程使用互斥对同一个资源提供排它性访问。
一旦某个线程获得资源,它需要等待一个特定的条件发生
pthread_cond_wait:同时指定了等待的条件变量和所拥有的互斥,执行后阻塞。
pthread_cond_signal只允许一个线程继续执行
pthread_cond_broadcast允许多个线程继续执行
等待条件变量的时候要暂时放弃互斥
得到条件变量的时候自动重新获得互斥
;多线程的ECHO效劳
并发的面向连接的算法
连接到达后,调用pthread_c
您可能关注的文档
- 广告学 第二章 广告理论.ppt
- 货币银行学23 凯恩斯理论框架与IS-LM模型.ppt
- 货币银行学24 IS-LM模型中的货币政策与财政政策.ppt
- 兼并与收购第3章 并购战略.ppt
- 机械设计_第4章平面机构的力分析.ppt
- 基于DOS的多任务测系统的实施-课程设计.ppt
- 级制药工艺学课程设计.pptx
- 急性冠脉综合征指南中的心电图规范化解读.ppt
- 集装箱运输实务4-2 接货准备.ppt
- 计算机视觉课件(7).ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)