2009并行计算与多核程序设计09-10windows多线程编程.ppt

上传人:qwe****56 文档编号:80596892 上传时间:2023-03-23 格式:PPT 页数:88 大小:5.28MB
返回 下载 相关 举报
2009并行计算与多核程序设计09-10windows多线程编程.ppt_第1页
第1页 / 共88页
2009并行计算与多核程序设计09-10windows多线程编程.ppt_第2页
第2页 / 共88页
点击查看更多>>
资源描述

《2009并行计算与多核程序设计09-10windows多线程编程.ppt》由会员分享,可在线阅读,更多相关《2009并行计算与多核程序设计09-10windows多线程编程.ppt(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、并行计算与多核程序设计并行计算与多核程序设计理论课理论课9-10 Windows多多线程线程陈天洲,施青松,胡威tzchen,zjsqs,2009年12月9日,玉泉校区曹西1011浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ APIp12月4日消息pLarrabee芯片及相关软件开发未达到项目预期,它不会成为消费类产品pIntel会继续从事独立图形芯片的研发,具体打算要到2010年再行宣布2浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计

2、实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬

3、件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 2n低于正常线程:THREAD-PRIORITY-BELOW-NORMAL1n正常线程:THREAD-PRIORITY-NORMAL0n高于正常线程:THREAD-PRIORITY-ABOVENORMAL-1n关键时间:THREAD-PRIORITY-TIMECRITI

4、CAL-1514浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协

5、协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ Prog

6、ram is EndpWaitForSingleObjectnWaitsuntilthespecifiedobjectisinthesignaledstateorthetime-outintervalelapsesvoidWriteThread(LPVOIDparam)coutWritingendl;SetEvent(evRead);intmain(intargc,char*argv)evRead=CreateEvent(NULL,FALSE,FALSE,NULL);evFin=CreateEvent(NULL,FALSE,FALSE,NULL);_beginthread(ReadThread

7、,0,NULL);_beginthread(WriteThread,0,NULL);WaitForSingleObject(evFinish,INFINITE);coutTheProgramisEndendl;return0;28浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江

8、 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实

9、 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 例子例子#includestdafx.h#include#include#defineTHREAD_INSTANCE_NUMBER3DWORDfoo(void*pData)intThreadNumberTemp=(*(int*)pData);HANDLEhSemaphore;coutfoo:ThreadNumberTempisrunning!endl;if(hSemaphore=OpenSemaphore(SEMAPHORE_ALL_ACCESS,FALSE,Semaphore.

10、Test)=NULL)coutOpenSemaphoreerror!endl;coutfooThreadNumberTempgetsthesemaphoreendl;ReleaseSemaphore(hSemaphore,1,NULL);CloseHandle(hSemaphore);return0;40浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学

11、软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ Framework线程线程p做通用语言运行时(CommonLanguageRuntime,CLR)n在CLR中程序是以中间代码的形式执行的n在概念上和Java的字节码相似p.NET框架对线程提供了广泛的支持58浙浙 江江 大大 学学 软软 硬硬 件件 协协

12、同同 设设 计计 实实 验验 室室http:/ Framework线程同步线程同步p.NET应用程序是基于.NET框架的nCLR是.NET框架的重要组成部分nCRL是支持多线程的n所有.NET应用程序都可以实现多线程p可使用VB.NET或者C#.NET框架的语言来设计多线程程序pSystem.Threading命名空间下包含了在.NET框架中进行多线程编程所需要的类,因此在程序中首先要声明程序位于System.Threading命名空间。59浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ Framework线程同步的实现线程同步的实现p创建辅助(

13、或从属)线程的第一个步骤是创建ThreadStart代理,指定要由该线程执行的线程函数。然后将ThreadStart代理传递给Thread类的构造函数。nThreadStartstarter=newThreadStart(MyFunction);Threadt=newThread(starter);t.Start();p线程创建好后,可以使用Thread类下的方法对线程进行控制:Resume 继续已挂起的线程。Sleep 已重载。将当前线程阻塞指定的毫秒数。Suspend 挂起线程,或者如果线程已挂起,则不起作用。Abort 调用此方法通常会终止线程。60浙浙 江江 大大 学学 软软 硬硬 件

14、件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ p.NET框架支持以下五种级别的线程优先级:n最高(Highest)n普通上(AboveNormal)n普通(Normal)(默认级别)n普通下(BelowNormal)n最低(Lowest)63浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验

15、 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协

16、 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大

17、 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ Draft,Standard for Programming Language C+Working Draft,Standard for Programming Language C+Doc No:N2857=09-0047Date:2009-03-23p1.10Multi-threadedexecutionsanddataracesp17节以后均为Library79浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ native_handle_type;/See 30.

18、2.3/construct/copy/destroy:thread();templateexplicitthread(Ff);templatethread(F&f,Args&.args);thread();thread(constthread&)=delete;thread(thread&);thread&operator=(constthread&)=delete;thread&operator=(thread&);/members:voidswap(thread&);booljoinable()const;voidjoin();voiddetach();idget_id()const;na

19、tive_handle_typenative_handle();/See 30.2.3/static members:staticunsignedhardware_concurrency();80浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ Studio调试器调试器pMSDN中给出的使用VisualStudio调试器调试线程的一些提示和一些常见的问题n在多线程代码中,使用跟踪点可以检查出程序中的许多bug。n可以使用断点筛选器将断点置于单个线程上。n如果我

20、们通过用户界面来调试多线程应用程序可能比较困难,那么可以考虑在另一台机器上运行应用程序并使用远程调试。n可以在本机代码中使用SetThreadNameAPI或在托管代码中使用Name属性来设置线程名称。线程名称对于托管代码特别有用,因为在托管代码中无法通过线程ID来识别线程。n多线程应用程序中的死锁是一类极其严重的bug。n在调试本机代码时,可以通过在“监视”窗口或“快速监视”对话框中输入TIB查看“线程信息块”的内容。n调试本机代码时,在“监视”窗口或“快速监视”对话框中输入Err,可以查看当前线程的错误代码。n在调试使用了本机代码对托管代码调用的混合代码时,托管代码与调用它的本机代码在相同的物理线程内运行,挂起或冻结本机线程也会冻结托管代码。n我们还可以使用C运行时库(CRT)函数来调试多线程应用程序。82浙浙 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/ 江江 大大 学学 软软 硬硬 件件 协协 同同 设设 计计 实实 验验 室室http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁