- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章并发服务器报告
pthread_key_create函数 #include pthread.h int pthread_key_create(pthread_key_t *key, void (* destructor)(void *value)); 返回值:正常执行后返回0,否则返回错误码 该函数在进程内部分配一个标志TSD的关键字,关键字是进程内部唯一的,所有线程在创建时关键字值是NULL。 key指向创建的关键字;destructor是一个可选的析构函数,用于每个线程终止时调用该析构函数。 pthread_setspecific函数 #include pthread.h int pthread_setspecific(pthread_key_t key, const void *value); 返回值:正常执行后返回0;否则返回正的错误码 该函数为TSD关键字绑定一个与本线程相关的值; void * pthread_getspecific(pthread_key_t key); 返回值:正常执行后返回与调用线程相关的关键字所绑定的值,否则返回NULL。 该函数获得与调用线程相关的关键字所绑定的值。 Pthread_key_delete函数 int pthread_key_delete(pthread_key_t key); 返回值:成功为0,否则为非0; 该函数删除进程内的TSD表示的关键字。该函数既不检查TSD是否有绑定值,也不调用该关键字的析构函数。 pthread_once函数 #include pthread.h int pthread_once(pthread_once_t *once_control, void (*init_routine) (void)) 成功返回0,否则返回错误码 如果本函数中,once_control变量使用的初值为PTHREAD_ONCE_INIT,可保证init_routine()函数在本进程执行序列中仅执行一次。 一般在init_routine函数中完成一些初始化工作。 说明 尽管TSD实现略微有些复杂,但却是将一个非线程安全函数转化为线程安全常用的方法。 另外一种常用的方法是:通过使用函数的参变量来取代静态变量,这种方法虽然简单,但需要改变函数的原型,同时,函数的调用者还需要为这些变量分配相应的空间并初始化。 并发服务器 目录 服务器分类技术 进程与线程 多进程服务器 多线程服务器 并发服务器 服务器分类 按连接类型分类 面向连接的服务器(如tcp) 面向无连接的服务器(如udp) 按处理方式分类 迭代服务器 并发服务器 迭代服务器 vs. 并发服务器 绑定地址 监听连接 接收连接 处理连接 断开连接 接收请求 处理请求 返回响应 绑定地址 监听连接 接收连接 创建子进程 关闭连接套接字 处理连接 关闭连接套接字 终止子进程 关闭监听套接字 服务器主进程 服务器子进程 TCP迭代服务器 TCP并发服务器 “进程”基本概念 进程定义了一个计算的基本单元,可以认为是一个程序的一次运行。它是一个动态实体,是独立的任务。它拥有独立的地址空间、执行堆栈、文件描述符等。 每个进程拥有独立的地址空间,进程间正常情况下,互不影响,一个进程的崩溃不会造成其他进程的崩溃。 当进程间共享某一资源时,需注意两个问题:同步问题和通信问题。 创建进程 #include sys/types.h #include unistd.h pid_t fork(void) 返回:父进程中返回子进程的进程ID, 子进程返回0, -1-出错 fork后,子进程和父进程继续执行fork()函数后的指令。子进程是父进程的副本。子进程拥有父进程的数据空间、堆栈的副本。但父、子进程并不共享这些存储空间部分。如果代码段是只读的,则父子进程共享代码段。如果父子进程同时对同一文件描述字操作,而又没有任何形式的同步,则会出现混乱的状况; 父进程中调用fork之前打开的所有描述字在函数fork返回之后子进程会得到一个副本。fork后,父子进程均需要将自己不使用的描述字关闭。 创建进程(cont.) #include sys/types.h #include unistd.h pid_t vfork(void); 该系统调用基本上与fork相同,在BSD3.0中开始出现,主要为了解决fork昂贵的开销。 两者的基本区别在于当使用vfork()创建新进程时,父进程将被暂时阻塞,而子进程则可以借用父进程的地址空间,直到子进程退出,至此父进程才继续执行。 终止进程 进程的终止存在两个可能: 父进程先于子进程终止(init进程领养) 子进程先于主进程终止 对于后者,系统
您可能关注的文档
- 第5章区域经济一体化:理论与实践报告.ppt
- 第5章双变量的交叉表分析报告.ppt
- 第5章_离心机2014-4-21A报告.ppt
- 第5章含有运算放大器的电阻电路报告.ppt
- 第5章合同法基本原理报告.ppt
- 第5章半固体制剂报告.ppt
- 第5章基本放大电路报告.ppt
- 第5章变压器报告.ppt
- 第5章处理器总线时序和系统总线报告.ppt
- 第5章基本立体及交线(完整1)-20141115报告.ppt
- 2025年超星尔雅学习通《劳动通论》章节测试及参考答案【能力提升】.docx
- 2025年社区工作者考试试题库附答案(精练).docx
- 2025年法律常识题库word.docx
- 2025年计算机知识题库含大题及参考答案【综合题】.docx
- 2025年计算机知识题库含大题附参考答案ab卷.docx
- 2025年法律常识题库带答案(培优b卷).docx
- 2025年国家电网招聘之经济学类考试题库附参考答案【达标题】.docx
- 2025年注册消防工程师之消防安全技术实务题库及参考答案(培优).docx
- 2025年中国聚四氟乙烯不粘涂料项目投资可行性研究报告.docx
- 2025至2030年中国大屏幕手机行业市场竞争格局分析及投资方向研究报告.docx
最近下载
- 湖北省2022年普通高中学业水平选择性考试历史试题.docx VIP
- 大件垃圾清运(建筑、装修垃圾)重点难点分析及解决措施.docx VIP
- (完整版)基于MATLAB的智能控制系统的介绍与设计实例最新毕业论文.pdf VIP
- 2024年贵州省中考语文试题及答案.pdf VIP
- 核电厂建设工程预算定额.pptx VIP
- YDT841.1-2016地下通信管道用塑料管第1部分:总则.docx VIP
- 应急预案的编制培训课件.pptx VIP
- 普陀区区域影像中心和区域检验中心项目可行性建设方案.pdf
- 金融服务居间协议(协议范本).doc VIP
- 2023年《建筑工程施工质量验收统一标准》.doc VIP
文档评论(0)