全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于线程安全与可重入性.txt两个男人追一个女人用情浅的会先放弃。两个女人追一个男人用情深的会先放弃。你的话,我连标点符号都不信男女授受不亲,中国哪来13亿人口。关于线程安全与可重入性 一个函数被称作“线程安全”的,当且仅当它被多个线程反复调用时,它会一直产生令人期待的正确的结果。反之为“线程不安全”函数,它主要有两种类型:(1)不保护共享变量的函数,包括全局变量和本地静态变量(static)。 我们可以使用POSIX信号量加以解决: Sem_t mutex; Sem_init(&mutex,0,1); Sem_wait(&mutex); Sem_post(&mutex); 优点:简单易行; 缺点:同步操作p、v将影响程序的执行时间。(2)返回指向静态变量的指针的函数,如gethostbyname,gethostbyaddr,inet_ntoa等等。 我一般这样使用gethodtbyname: Struct hostent *hostp; Hostp=gethostbyname(); Gethostbyname将执行结果存放在自己的static struct hostent变量中,并返回一个指向这个结构的指针。如果我们从并发线程中调用这个函数,那么将发生不可预料的结果,正在被一个线程使用的结果,可能悄悄地被其它线程覆盖。解决办法:(a)、改写库函数gethostbyname,增加一个参数,将本地结构变量传入gethostbyname,如: Struct hostent host; Gethostbyname(&host,); 再使用host方可! (b)、改写库函数gethostbyname,不是返回指针,而是直接返回struct hostent. 缺点:struct hostent结构较大,影响函数的效率。 以上两种办法(a)、(b),要求修改库函数,基本上不可行! (c)、使用lock and-copy技术,即定义自己的封装函数,通过调用它来取代直接使用gethostbyname. struct hostent *gethostbyname_my(char *hostname) struct hostent *shar,*unshar; unshar=malloc(sizeof(struct hostent) sem_wait(&mutex); shar=gethosybyname(hostname); *unshar=*shar; srm_post(&mutex); return unshar; 现在大多数unixlinux操作系统,提供了线程不安全函数的可重入版
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2479-2026轮廓标耐密封测量装置校准规范
- 高纯试剂工安全素养考核试卷含答案
- 汽车回收工5S执行考核试卷含答案
- 激光设备安装调试员风险评估与管理知识考核试卷含答案
- 粪便清运工班组考核测试考核试卷含答案
- 客运计划员测试验证评优考核试卷含答案
- 劳务派遣管理员岗中专业素质考核试卷含答案
- 光伏组件制造工岗前理论评估考核试卷含答案
- 地理信息建库员创新方法知识考核试卷含答案
- 无轨电车架线工安全意识模拟考核试卷含答案
- 【初一】【秋季上】七年级开学家长会:从小学到初中陪孩子完成一次重要换挡 校园风【课件】
- 2026秋新教材译林版五年级上册英语Unit 1 Good habits 语法讲义+练习题(含答案)
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
- 超声评估卵巢囊肿分型
- 储罐焊接施工方案
- 2026年兵团公务员考试行测真题及答案
- 2026年医院搬迁住院患者转运与医疗保障方案
- 部编版语文一年级上册《a o e》说课稿
- AI在智慧茶园土壤湿度监测与灌溉控制的应用
- Unity AR-VR虚拟现实开发基础(第2版)课件 第3章 在Unity3D中使用C#
- 海力士安全培训内容课件
评论
0/150
提交评论