



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 多线程的调度一、 实验目的1、掌握多线程编程的特点。2、重点掌握实时多任务的同步问题。二、实验原理1、多线程的概念多线程就是指:一个进程内可以有多个可执行的单元,每个单元就是一个线程,它包含独立的堆栈和寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。一个进程内的所有线程使用同一个位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别, 优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上运行。这样就可使处理器的任务平衡,也提高了系统的运行效率。一般来说,一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,这就是所谓基于多线程的多任务。2、多线程的创建与终止要想创建新的线程,可以调用MFC的全局函数AfxBeginThread()。该函数启动新线程并返回控制,然后,新线程和调用AfxBeginThread()的线程同时运行。当用户需要终止一个线程的执行时, 需要调用函数TerminateThread()。这两个函数的详细说明可以查看MSDN帮助信息。3、线程的同步 编写多线程应用程序的最重要的问题就是线程之间的资源同步访问。因为多个线程在共享资源时如果发生访问冲突通常会产生不正确的结果。例如,一个线程正在更新一个结构的内容的同时另一个线程正试图读取同一个结构。结果,我们将无法得知所读取的数据是什么状态:旧数据,新数据,还是二者的混合?MFC提供了一组同步和同步访问类来解决这个问题,同步对象包括:CSyncObject,CSemaphore,CMutex,CcriticalSection和CEvent;同步访问对象包括:CMultiLock和CSingleLock三、实验内容进程同步都要涉及到的一个经典问题就是哲学家就餐问题下面来介绍一下哲学家就餐问题: 哲学家就餐问题中,一组哲学家围坐在一个圆桌旁,每个哲学家的左边都只有一只筷子(当然他的右边也有一只筷子,但是这是他右边哲学家的左边的筷子),他们吃完了就思考,思考了一会就会饿,饿了就想吃,然而,为了吃饭,他们必须获得左边和右边的筷子。当每个哲学家只拿有一只筷子的时候,会坐者等另一只筷子,在每个哲学家都只拿一个筷子的时候,就会发生死锁。实验的主要内容就是利用多线程来实现哲学家就餐的问题,以达到理解进程同步的目的。四、实验步骤1、利用AppWizard生成一个名为Philosophers基于单文档的应用程序框架。 2、在类CPhilosophersView构造函数先把每个哲学家对应的线程句柄设置为NULL,再新建一个同步类对象。CPhilosophersView:CPhilosophersView()/ TODO: add construction code herefor(int i = 0; i PHIL_NUM; i+)m_pThreadi = NULL;m_pMutex = new CMutex;m_pEvent = new CEvent(FALSE, TRUE);3、模拟多个哲学家的行为 void CPhilosophersView:OnPlayMany() / TODO: Add your command handler code hereint i, left, right;int chopStartX6, chopStartY6, chopEndX6, chopEndY6;int philX6, philY6;PARAM *pParam = NULL; for(i = 0; i PHIL_NUM; i+)chopSticksi = FALSE;for (i =0; iResetEvent();CHOP_COORDINATE(150, 150);PHIL_COORDINATE(150, 150);for(i = 0; i Id = i;pParam-m_hWnd = this-m_hWnd;pParam-philX = philXi;pParam-philY = philYi;left = i;right = (i+1) % PHIL_NUM;pParam-chopXY0 = chopStartXleft;pParam-chopXY1 = chopStartYleft;pParam-chopXY2 = chopEndXleft;pParam-chopXY3 = chopEndYleft;pParam-chopXY4 = chopStartXright;pParam-chopXY5 = chopStartYright;pParam-chopXY6 = chopEndXright;pParam-chopXY7 = chopEndYright;m_pThreadi = AfxBeginThrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【语文】四平市一年级下册期末复习试题(含答案)
- 【语文】遵义市小学一年级上册期末试题
- 【语文】滨州市小学一年级下册期末试卷(含答案)
- 2022年小学毕业升学模拟卷综合试题一答案周秦教育
- 八年级英语常见冠词句型-及答案
- 五年级下册通辽道德与法治期末试卷测试卷(含答案解析)
- 2025年智能制造工程师招聘考试试题及答案
- 2025年国家公务员考试行测副省级行政职业能力测验试题及答案
- 2025年质量员之设备安装质量专业管理实务通关题库附带答案
- 护士胸外科试题及答案
- 2025年“国学小名士”知识线上竞答题库500题(含答案)
- 2025年河北水利发展集团有限公司公开招聘工作人员41名笔试参考题库附带答案详解
- 脏腑手法调理培训课件
- 2025年度宁波法院面向全市基层法院公开遴选员额法官5人考试参考题库及答案解析
- 酒店消防安全培训课件
- 2025年人工智能市场渠道拓展策略方案
- 气血两虚日常护理常规
- Unit 6 A Day in the Life 大单元整体教学分析教案-2025-2026人教版七年级英语上册
- GJB827B--2020军事设施建设费用定额
- GB/T 20716.1-2025道路车辆牵引车和挂车之间的电连接器(7芯)第1部分:24 V标称电压车辆的制动系统和行走系的连接
- 2025年第十七届广东省中学生天文知识竞赛试题(含答案)
评论
0/150
提交评论