1、 1 目录 摘要 3 Abstract 4 1 绪论 . 5 1.1 研究背景和意义 . 5 1.2 论文组织 5 2 多线程数据交互方法. 6 2.1 使用互斥锁进行数据交互 . 6 2.1.1 互斥锁基本原理 6 2.1.2 互斥锁数据交互方法 . 6 2.2 使用条件变量进行数据交互 7 2.2.1 条件变量基本原理 7 2.2.2 条件变量操作过程 7 2.3 使用读写锁进行数据交互 . 7 2.3.1 读写锁基本原理 7 2.3.2 读写锁操作过程 8 2.4 其它线程数据交互方式. 8 2.4.1 信号量数据交互方式. 8 2.4.2 线程与信号数据交互方式 8 3 多线程数据性能
2、测试方法 9 3.1 CPU 性能测试 9 3.2 内存性能测试10 3.3 进程运行测试 11 4 测试步骤及结果分析13 4.1 基于互斥锁的设计思路及测试结果 13 4.1.1 互斥锁程序设计思路 13 4.1.2 互斥锁数据交互测试结果 .16 4.2 基于条件变量的设计思路及测试结果.20 4.2.1 条件变量程序设计思路 20 4.2.2 条件变量数据交互测试结果 .23 4.3 基于读写锁与线程信号的设计思路及测试结果.25 4.3.1 读写锁程序设计思路25 2 4.3.2 读写锁数据交互测试结果.27 4.4 整体数据交互方法设计思路与测试结果 .28 4.4.1 整体数据交
3、互程序设计思路 28 4.4.2 整体数据交互测试结果 31 5 总结与展望33 参考文献 34 致谢 .35 3 摘要 随着嵌入式 Linux 系统的广泛应用和发展,多线程技术日益完善。使用多线程编程可 以大大增进效率。将任务相关联的各个线程运行在统一地址空间上,并且共享全局变量和 内存, 这样线程之间共享数据很方便, 相互间通信也容易, 十分利于多线程间的数据交互。 同时,由于 ARM 与 Linux 系统的出色表现,基于 ARM 的 Linux 嵌入式系统的多线程数据 交互在实际应用得到很好的推广,多线程数据交互的性能也越来越受到重视1210。研究 如何测试分析多线程间数据交互问题以及数
4、据交互的方式方法十分有意义。这能为多线程 的编程提供很好的参考。 本文着重研究多线程下数据交互的方式方法,并且测试各种数据交互方式的系统性能 以及优缺点。主要探讨了基于互斥锁的多线程数据交互方式、基于条件变量的多线程数据 交互方式以及基于读写锁的多线程数据交互方式。通过设计综合程序,创建六个线程,分 别实现消费者、生产者、读取、写入数据等功能,相互间采用不同的方式方法进行数据交 互,以此来研究多线程数据交互的编程,测试多线程数据交互的性能。整个设计采用 C 语 言,并且调用线程标准库 pthread。以此完成整个设计研究。 关键词: Linux; 多线程;ARM;数据交互; 4 Abstract With the extensive application and development of embedded Linux systems, multi-threading technology has improved steadily. Using multi-threaded programming can greatly improve efficiency. If