[操作系统课程设计报告网络121朱正杰).docVIP

[操作系统课程设计报告网络121朱正杰).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[操作系统课程设计报告网络121朱正杰)

操作系统课程设计报告 题目: 线程安全型双向链表的实现 专 业: 网络工程 班 级: 网络121 学 号: 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函数:查找链表中是否有指定的元素,若有,返回能够访问该结点的指针;若无,返回NULL。 Print函数:打印当前链表中的所有元素。 完成该链表后,自己编写一个测试程序,生成多个线程同时读写该链表,验证链表执行是否正确,并给出测试报告。 2.系统总体结构描述与主要数据结构说明 2.1系统总体结构描述 系统总体结构设计的任务,是根据系统分析的逻辑模型设计应用软件系统的物理结构。系统物理模型必须符合逻辑模型,能够完成逻辑模型所规定的信息处理功能。这是物理设计的基本要求。 系统应具有可修改性,即易读,易于进行查错、改错、可以根据环境的变化和用户的要求进行各种的改变和改进。系统是否具有可修改性,对于系统开发和维护影响极大。据统计,在系统生命周期中各阶段的应用软件费用及人力投入大体分布如下:系统开发:20%;系统维护:80%。 由于程序功能简单,未用数据库辅助存储技术,本程序只供实现对双向链表的插入,删除,查找和打印等功能。 2.2主要数据结构说明 宏定义部分: #define random(x)(rand()%x) //产生随机数 #define cr 1 //1标识为插入 #define sc 0 //0标识为删除 volatile int readcount=0; //读者数目 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(h_Mut

文档评论(0)

19840506 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档