并行计算与多核程序设计

并行计算与多核程序设计

ID:30843909

大小:47.50 KB

页数:5页

时间:2019-01-03

并行计算与多核程序设计_第1页
并行计算与多核程序设计_第2页
并行计算与多核程序设计_第3页
并行计算与多核程序设计_第4页
并行计算与多核程序设计_第5页
资源描述:

《并行计算与多核程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第四章Windows多线程编程及调ffi->web课件返回在Windows平台下可以通过Windows的线程库來实现多线程编程,可以利用Win32API或MFC以及.NetFramework提供的接PT來实现。实现方式的多样化给Windows编程带來了很人的灵活性,但也使得多线稈编程变得复杂。对于多线程的程序我们可以使用VisualStudio调试工具进行调试,也可以使用多核芯片厂家的线程分析与调试工具进行调试及优化。Windows线程库介绍Win32API是Windows操作系统为内核以及应用程序之间提供的接口,将内核提供的功能

2、进行函数封装,应用程序通过调用相关的函数获得相应的系统功能。Win32API提供了-系列处理线程的萌数接口,来向应用程序提供多线程的功能。MFC是微软基础两数类库(MicrosoftFoundationClasses),由微软提供的,用类库的方式将Win32API进行封装,以类的方式提供给开发者。在MFC类库中,提供了对多线程的支持。由于MFC是在Win32API基础Z上进行封装的,其基本原理与Win32API的基本实现原理很类似。MFC对同步对象作了封装,因此对用户编程实现来说更加方便。.NETFramework由两部分构成:公

3、共语言运行库(CommonLanguageRuntime,CLR)和Framework类库(FrameworkClassLibrary,FCL)。CLR包括自己的文件加载器、垃圾收集器、安全系统等。CRL提供了一个可靠而完善的多语言运行环境。CLR是一个软件引擎,用于加载应用程序、检查错误、进行安全许可认证、执行和清空内存。Framework类库提供了所有应用程序模型都要使用的一个面向对象的API集合。.NET基础类库的System.Threading命名空间提供了大量的类和接口來支持多线程。所冇与多线程机制相关的类都存放在Sys

4、tem.Threading命名空间中。其中Thread类用丁-创建及管理线程,ThreadPool类用于管理线程池等,此外还提供线程间通讯等实际问题的机制。使用Win32线程APIWin32函数库中捉供了操作多线程的函数,包括创建线程、管理线程、终止线程、线程同步等接口。线程必须从一个指定的函数开始执行,该函数称为线程函数,具冇如下原型:DWORDWINAPIThreadFunc(LPVOIDIpvThreadParm);线程创建创建线程的函数如下:HANDLECreateThread(LPSECURITY_ATTRIBUTESI

5、pThreadAllributes,SIZE_TdwStackSize,LPTHREAD_START_ROUTINEIpStartAddress,LPVOIDIpParameter,DWORDdwCreationFlags,LPDWORDIpThreadld);CreateThread函数中需要传递6个参数。下面简单介绍一下这几个参数的用法:第一个参数1pThreadAtt,是一个指向SECURITY-ATTRIBUTES结构的指针,该结构制定了线程的安全属性,缺省为NULL。第二个参数dwStackSize,是栈的大小,--般设

6、置为0。第三个参数IpFim是新线程开始执行时,线程函数的入口地址。它必须是将要被新线程执行的函数地址,不能为NULL。第四个参数IpParameter,是线程函数定义的参数。可以通过这个参数传送值,包括指针或者NULL。第五个参数dwCreationFlags,控制线程创建的附加标志,可以设置两种值。()表示线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;第六个参数IpThreadlD,为指向32位变量的指针

7、,该参数接受所创建线程的1D号。如果创建成功则返回线程的句柄,否则返回NULLo线程管理(1)设置线程的优先级当一个线程被创建时,它的优先级等于它所属进程的优先级。可以通过调用SetThreadPriority函数来设置线稈的相对优先级。线程的优先级是相对其所展的进程的优先级而言的。例如:BoolSetThreadPriority(HANDLEhPriority,intnPriority);参数hPriority是指向待设置的线程句柄,线程与包含它的进程的优先级关系如下:线程优先级二进程优先级+线程相对优先级(2)线程的挂起与恢复

8、进程中的每个线程都有挂起计数器(suspendcount)o当挂起计数器值为0时,线程被执行;当挂起计数器值大于0吋,调度器不去调度该线程。不能够直接访问线程的挂起计数器,可以通过调用WindowsAPI函数來改变它的值。可以通过调用Suspend

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

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

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