- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计报告
题目: 线程安全型双向链表的实现
专 业: 网络工程 201210314005
姓 名: 朱正杰
上海海事大学信息工程学院
2014年 12月 15日
目录
1.课程设计任务描述与要求 1
1.1任务描述 1
2.系统总体结构描述与主要数据结构说明 1
2.1系统总体结构描述 1
2.2主要数据结构说明 2
3.课程设计报告内容 5
3.1模块功能 5
3.2详细流程图 6
3.3实现思路说明 7
3.4程序清单 7
3.5注释 8
4.总结 19
附录: 19
程序使用说明 19
程序测试思想 20
程序测试结果 20
参考书目: 21
1.课程设计任务与
1.1任务描述
一个安全的双向链表,所谓线程安全,就是该链表能够实现多个线程同时正确的链表结点,也就是能够实现对链表这个资源的保护。
1.2
需要实现的函数
InitList函数:初始化一个空的双向,并初始化各个用于保护链表的信号量。
Insert函数:向链表指定位置插入一个结点。
Erase函数:删除指定位置的结点。
Clear函数:删除链表中的所有结点
Find函数:查找链表中是否有指定的元素,若有,返回能够该的指针;若无,返回
Print函数:打印当前链表中的所有元素。该链表后,编写一个测试程序,生成多个线程同时读写该链表,验证链表执行是否,并给出测试报告。总体结构描述与数据结构说明
总体结构描述
总体结构设计的任务,是系统分析的逻辑模型设计应用软件系统的物理结构。系统模型必须符合逻辑模型,能够完成逻辑模型所规定的处理功能。物理的基本要求。
应可修改,即易读,易于进行查错、改错、可以根据的变化和用户的要求各种的改变和改进。系统具有可修改性,对于系统开发和维护影响。据统计在系统周期中各阶段的应用软件费用及人力投入大体分布如下:系统开发:%;维护:%。
程序功能简单,未用数据库辅助存储技术,本程序只供实现对双向链表的插入,删除,查找和打印等功能。2.2主要数据结构说明
部分: //产生随机数
const int lsarea=10000; //链表大小随机数
const int earea=10000; //元素范围随机数
const int sum=100000; //线程运行总次数
int th=0; //初始化当前线程总数
int th_cz=1; //初始化当前查找线程总数
int th_cr=1; //初始化当前插入线程总数
int th_sc=1; //初始化当前删除线程总数
HANDLE h_Mutex; //控制读者数量readcount的互斥访问量
HANDLE mutex; //控制读写互斥,写写互斥的信号量
typedef int ElemType; // 定义ElemType为int类型的别名
typedef struct DuLNode *PNode; //结点指针
//定义结点结构体
typedef struct DuLNode{
ElemType data; //定义数据域
PNode prior; //定义前驱指针
PNode next; //定义后继指针
}DuLNode,*DLN;
//定义双向链表结构体
typedef struct DuLinkList{
DLN head; //定义头结点
int Length; //定义链表长度
}DuLinkList,*DLL;
//定义读者传参结构体
struct Readarg{
DLL List; //定义链表
ElemType e; //定义查找元素
};
//定义写者传参结构体
struct Writearg{
DLL List; //定义链表
int add; //定义插入或删除的位置
ElemType e; //定义插入元素
int Flag; //定义传入标示符(cr执行插入操作,sc执行删除操作)
};
线程函数部分:
WaitForSingleObject(mutex,INFINITE);//等待信号量信号
ReleaseMutex(h_Mutex);//释放互斥量信号
ReleaseSemaphore(mutex,1,NULL);//释放信号量信号
主函数部分:HANDLE hThread[sum];//定义线程句柄unsigned threadID[sum];//定义sum个线程Readarg *RA=new Readarg[1];//创建读者传参变量RA[0].List=L;//传参变量赋值
RA[0].e=random(100);//传参变量赋值
Writearg *WA=new Wr
您可能关注的文档
- 安装工程定额与算作业2.doc
- 氨氮自动水质分仪使用手册-g.doc
- 按摩穴位治疗肾——颈椎病.doc
- 案例:美国波音司.doc
- 奥林匹克数学的巧(上).doc
- 奥数题精彩解析大全).doc
- 八年级地理上册末复习检测试题--8开版20130104.doc
- 八年级地理上册末复习检测试题---修改于20121224.doc
- 八年级第一学期末考试试卷.doc
- 八年级散文阅读解.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)