cevent类的使用.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
黄淮学院信息工程学院 ___操作系统__课程 实验报告 实验项目名称 CEevent类使用 实验日期 2016.04.19 学生学号 1434110111 学生姓名 付和平 专业班级 计科1401B 实验地点 1#615 实验类型 □验证型 □设计型 □综合型 学 时 2 同组人员 列出同组实验者;如无,则填“无” 一、实验目的及要求(本实验所涉及并要求掌握的知识点) 进程的同步问题是操作系统处理机管理的一大核心问题,为了更好的理解和掌握操作系统管理的思想,现通过临界区的互斥访问来了解对临界资源的处理过程。 学习VC++6.0线程控制,培养和提高学生的编程能力。 二、实验环境(本实验所使用的硬件设备和相关软件) Pc win7操作系统 Vc++6.0实验平台 三、实验内容及步骤 建立一个基于对话框的工程MultiThread9,在对话框IDD_MULTITHREAD9_DIALOG中加入一个按钮和两个编辑框控件,按钮的ID为IDC_WRITEW,标题为“写‘W’”;两个编辑框的ID分别为IDC_W和IDC_D,属性都选中Read-only; 在MultiThread9Dlg.h文件中声明两个线程函数: UINT WriteW(LPVOID pParam); UINT WriteD(LPVOID pParam); 使用ClassWizard分别给IDC_W和IDC_D添加CEdit类变量m_ctrlW和m_ctrlD; 在MultiThread9Dlg.cpp文件中添加如下内容: 为了文件中能够正确使用同步类,在文件开头添加 #include afxmt.h 定义事件对象和一个字符数组,为了能够在不同线程间使用,定义为全局变量。 CEvent eventWriteD; char g_Array[10]; 添加线程函数: UINT WriteW(LPVOID pParam) { CEdit *pEdit=(CEdit*)pParam; pEdit-SetWindowText(); for(int i=0;i10;i++) { g_Array[i]=W; pEdit-SetWindowText(g_Array); Sleep(1000); } eventWriteD.SetEvent(); return 0; } UINT WriteD(LPVOID pParam) { CEdit *pEdit=(CEdit*)pParam; pEdit-SetWindowText(); WaitForSingleObject(eventWriteD.m_hObject,INFINITE); for(int i=0;i10;i++) { g_Array[i]=D; pEdit-SetWindowText(g_Array); Sleep(1000); } return 0; }   仔细分析这两个线程函数, 您就会正确理解CEvent 类。线程WriteD执行到 WaitForSingleObject(eventWriteD.m_hObject,INFINITE);处等待,直到事件eventWriteD为有信号该线程才往下执行,因为eventWriteD对象是自动事件,则当WaitForSingleObject()返回时,系统自动把eventWriteD对象重置为无信号状态。 双击按钮IDC_WRITEW,添加其响应函数: void CMultiThread9Dlg::OnWritew() { CWinThread *pWriteW=AfxBeginThread(WriteW, m_ctrlW, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteW-ResumeThread(); CWinThread *pWriteD=AfxBeginThread(WriteD, m_ctrlD, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteD-ResumeThread(); } 编译并运行程序,单击“写‘W’”按钮,体会事件对象的作用。 四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图) 五、实验总结(对本实验结果进行分析,实验心得体会及改进意见) 一个手工CEvent对象存在于由ResetEvent 或SetEvent设置的状态中,直到另一个函数被调用。一个自动CEvent对象在至少一个线程

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档