目 录
1.引言 1
1.1动机 1
1.2 要解决的问题 1
2.系统设计 2
2.1系统总体框架 2
2.2 系统总体流程 3
2.3 系统功能模块 4
3.数据结构设计 4
3.1单向链表数据结构 4
3.2读者模型 11
3.3写者模型 14
4.关键技术与系统实现 15
4.1初始化 15
4.2选择菜单功能 15
4.3读者写者模型构建 17
4.4线程同步互斥的实现 26
4.5验证数据结构的准确性 29
4.6为线程传递多个参数的实现 31
5.系统运行结果 33
5.1运行环境 33
5.2运行与测试结果分析 34
6.调试和改进 37
7.心得和结论 38
8.结论和体会 38
9.进一步改进方向 39
主要参考文献 40
1.引言
链表作为经典的数据结构,在计算机各个领域中都有着广泛的应用,为了满足用户需求,各种计算机软件的开发都需要应用到链表这一数据结构,由于程序运行在操作系统中,为了让程序更好更快更高效的在操作系统中运行,必须引入同步与互斥机制,那么实现一个线程安全性的链表就显得尤为重要,针对该问题,本课程设计将着力设计一个基于c语言实现的线程安全性链表,以期用于实践生活中。
1.1动机
在计算机系统内部,经常发生多个线程同时访问一个数据结构的现象;多个线程会同时修改或读取一个数据结构的内容;多个线程同时读写会引入读写冲突问题,这些操作如果不经过特殊处理,很容易导致读写操作无效;基于上述现象,本课程设计的动机就是为了保证读写正确性, 让程序运行速度更快,输出结果所需时间更少,为将来的研究者提供参考。
所以,本课程设计旨在设计一个能够保证线程安全的链表,在对链表同时进行多次插入删除打印等操作时,相互之间不会产生冲突,保证程序的正常运行,结果正确。
1.2 要解决的问题
为实现保证线程安全的链表,本系统需要实现以下几个功能:
(1)用C语言设计链表这一数据结构,实现链表的插入、删除、打印等操作的函数,并保证其正确性。
(2)设计一个测试函数实现对定义好的链表数据结构进行健壮性测试,保证链表自身的准确性和稳定性,继而保证对后序实现链表的线程安全测试准确
(3)设计一个测试函数测试多个线程并发执行同时对其链表值修改时,不会产生冲突和错误。
(4)利用读者写者模型设计一个测试函数测试多个线程并发执行同时对其链表值修改和读操作时,不会产生冲突和错误。