基于多线程并行技术研究及讨论

基于多线程并行技术研究及讨论

ID:24509192

大小:74.00 KB

页数:4页

时间:2018-11-14

基于多线程并行技术研究及讨论_第1页
基于多线程并行技术研究及讨论_第2页
基于多线程并行技术研究及讨论_第3页
基于多线程并行技术研究及讨论_第4页
资源描述:

《基于多线程并行技术研究及讨论》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于多线程并行技术研宄及讨论海南省东方市公安消防支队麦宜摘要:通过对当前各种比较流行的多线程方法(如Windows线程,OpenMP,IntelTBB等)的学习和实践来深入了解多线程技术的工作原理和发展现状,然后通过设计了一个基于不同线程方法的运算程序并进行试验,来量化比较各种方法的优劣,木文主要研究和讨论多线程并行技术,并尝试分析了其中的原因,以找到对其进行改良的思路,认清多线程技术的发展趋势。关键词:多线程;Windows线程;OpenMP;IntelTBB线程(thread),有时也被叫做轻量级进程(LightweightProcess,LWP),是一个程

2、序流运行的基木单位,也是一个进程调度的最小单元。一个最基木的线程,是由线程ID,寄存器组快,堆栈和当前指令指针(PC)构成的。一个线程,能够撤销或创建其他线程,一个进程下的线程之间可以并发地同步执行。线程在程序中是一个独立的顺序执行流程,一个程序中如果同时有多个线程运行完成各自的工作,被称作多线程[1]。一、各种多线程方法概述(一)Windows多线程1、Windows多线程基木情况Windows98及以上版木的操作系统属于多任务操作系统,支持两种不同的多任务并行处理方法:基于进程(process)的多任务方法和基于线程(thread)的多任务方法。进程指的是执

3、行中的程序,在执行中,线程相互影响,以至线程在执行中显示出间断的特性。线程的基木状态分为运行,就绪,阻塞三种。2、Windows多线程同步机制程序的同步运行经常会引起和时间相关的错误,这就需要引入同步机制。同步机制可以调度线程间资源的并行访问。Windows98为了解决多线程同步问题,设计了四种主要的线程同步对象[2],这些对象对线程而言有两个状态:非信号状态(nonsignalstate)和信号状态(signalstate)。当对象为信号状态时,线程执行并可以享用井享资源,否则则需要等待。(二)OpenMP概述1、OpenMP基木概念OpenMP是在共享内存体

4、系下的编程模型,它由三个基本API部分构成,它们分别是编译指令、运行部分和环境变量。这个编程模型包括编译制导、运行库例程和环境变量[3]。OpenMP支持增量并行化,是C/C++和Fortan等的应用编程接口,己经被大多数计算机硬件和软件厂家所标准化。OpenMP的0标是使程序更具标准性,更简洁实用,使用更方便,可移植性更高。2、OpenMP并行编程模型OpenMP是基于线程的并行编程模型,采用,Fork-Join体现的是一种分治的思想,多被用来分解处理问题。Fork-join算法将当前问题细分为若干个子问题,然后对这些子问题执行一样的操作,若子问题细分的够小,

5、就可以很快地直接被解决。如果子问题全部得到解决,把它们结合起来也就解决了父问题。(三)IntelTBB概述1、基本概念IntelTBB是一个C++多线程模板库,与直接使用API程序编程的方法相比,TBB为多线程编程适当地做了一些抽象,同吋也涵盖了更丰富的内容,如提出了任务的概念,为常规算法提供了的完备的实现,负载自动平衡特性以及不对处理器数量进行绑定以提供方便的扩展性。我们可以通过使用这些库来很方便地设计多线程程序。二、各种线程方法性能分析(一)性能分析实验1、实验0的了解各种线程工作方法的效率,理解各种多线程工作方法。2、实验方法分别利用四种线程方法,对输入的

6、一组数字{10000,30000,100000,300000,1000000}进行N以内的素数判定,记录所需的运算吋间。实验重复10次,然后求出每种方法所需的平均运算时间。通过对运算吋间的量化统计,并进行分析,以期望对各种线程方法的效率有更直观的了解。3、实验结果记录结果求平均值结果如下表:表4-1-1实验结果列表4、结果分析由实验结果我们可以看出:1)单线程方法耗时最多,IntelTBB最旮效率,而Windows线程和OpenMP的效率则相对接近,处于中游。2)在循环次数较少的吋候,Windows线程方法不如OpenMP脊效率,但随着循环计算次数的增加,Win

7、dows线程方法逐渐超越OpenMP算法。即随着算法复杂度的提升,Windows线程方法比OpenMP算法更能充分发挥其多线程的效率。(二)合理选择多线程工具多线程开发究竟应该选用TBB,OpenMP,还是本地Windows线程,取决于很多方面的因素,不仅要考虑开发环境因素,还要根据多线程模式的复杂度来选择。1、IntelTBB?OpenMP?Windows多线程?由于这只是一个很简单的实验,意在对各种线程方法的效率有一个初步的认识,所以只是得出了很初步的结果分析。事实上,多线程开发究竟应该选用TBB,OpenMP,还是本地Windows线程,取决于很多方面的因

8、素,不仅要考虑开发环境因

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。