2022年操作系统实验 3.pdf

上传人:H****o 文档编号:33373399 上传时间:2022-08-10 格式:PDF 页数:8 大小:120.44KB
返回 下载 相关 举报
2022年操作系统实验 3.pdf_第1页
第1页 / 共8页
2022年操作系统实验 3.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年操作系统实验 3.pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验 3.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、武 汉 工 程 大 学计算机科学与工程学院操作系统实验报告专业班级13 计工 01 班实验地点计工 403机房学生学号1305120610 指导教师张立学生姓名李敏实验时间2014-10-19 /2014- 10-26 实验项目实验二、创建线程及线程通信实验类别操作性()验证性()设计性() 综合性() 其它实验目的及要求(1)熟悉 Windows 中的线程及进程的创建(2)掌握利用Windows 中的同步机制实现线程同步及通信。成 绩 评 定 表类别评 分 标 准分值得分合计上机表现积极出勤、遵守纪律主动完成实验设计任务30 分实验报告及时递交、填写规范内容完整、体现收获70 分说明:评阅教

2、师:张立日 期: 2015 年 11 月 1 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告2 实 验 内 容一、 实验内容要求:创建线程,利用互斥实现线程共享变量通信。示例程序: Thread.exe 简要说明:1、点“创建线程”按钮,创建两个线程,一个线程不断对一个变量加1,结果显示在第一个文本框中。另一个线程不断对另一个变量减1,结果显示在第二个文本框中。 这两个线程之间没有交互,

3、仅用于演示线程的创建。2、演示线程互斥,点“线程互斥”按钮,创建两个线程,一个线程不断循环,每次循环对共享变量x 做 100 次加 1 操作(这 100 次加 1 操作作为一个临界区 CSa ) ,另一个线程不断循环,每次循环对共享变量x 做 100 次减 1 操作(这 100 次减 1 操作作为一个临界区CSb ) ,结果显示在第三个文本框中。可以看到结果是从0 到 100,然后又从 100 回到 0。可见 CSa和 CSb两个临界区是互斥的。3、除了没有互斥,其它同2,结果显示在第四个文本框中。可见CSa和 CSb两个临界区的执行是有交叉的,CSa的执行可能被 CSb打断, CSb的执行也

4、可能被 CSa打断二、 源代码UINT ThreadA(LPVOID pParam) CThreadDlg * pParent=(CThreadDlg *)pParam; pParent-DoThreadA(); return 0; UINT ThreadB(LPVOID pParam) CThreadDlg * pParent=(CThreadDlg *)pParam; pParent-DoThreadB(); return 0; UINT ThreadC(LPVOID pParam) CThreadDlg * pParent=(CThreadDlg *)pParam; pParent-Do

5、ThreadC(); return 0; UINT ThreadD(LPVOID pParam) CThreadDlg * pParent=(CThreadDlg *)pParam; pParent-DoThreadD(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告3 UINT ThreadE(LPVOID pParam) CThreadDlg * pParent=

6、(CThreadDlg *)pParam; pParent-DoThreadE(); return 0; UINT ThreadF(LPVOID pParam) CThreadDlg * pParent=(CThreadDlg *)pParam; pParent-DoThreadF(); return 0; void CThreadDlg:DoThreadA() int i=0; CString s; while(1) i+; s.Format(%d,i); mySetWinText(IDC_EDIT1,s); Sleep(1); void CThreadDlg:DoThreadB() int

7、 i=0; CString s; while(1) i-; s.Format(%d,i); mySetWinText(IDC_EDIT2,s); Sleep(1); void CThreadDlg:DoThreadC() CString s; while(1) m_pMutex-Lock(); for(int i=0;iUnlock(); void CThreadDlg:DoThreadD() CString s; while(1) m_pMutex-Lock(); for(int i=0;iUnlock(); void CThreadDlg:DoThreadE() CString s; wh

8、ile(1) for(int i=0;i100;i+) ShareCount1+; s.Format(%d,ShareCount1); mySetWinText(IDC_EDIT4,s); MySleep(100); void CThreadDlg:DoThreadF() CString s; while(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告5 for(int i=0;i10

9、0;i+) ShareCount1-; s.Format(%d,ShareCount1); mySetWinText(IDC_EDIT4,s); MySleep(100); 创建进程:void CThreadDlg:OnCreatethread() /创建线程 A hThreadHandleA = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) ThreadA, (LPVOID)this, 0, (LPDWORD)&dwThreadIDA); / 创建线程 B hThreadHandleB = CreateThread(0, 0, (LPTHREAD_S

10、TART_ROUTINE) ThreadB, (LPVOID)this, 0, (LPDWORD)&dwThreadIDB); 线程互斥:void CThreadDlg:OnThreadmutex() m_pMutex =new CMutex; / 创建线程 c hThreadHandleC = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) ThreadC, (LPVOID)this, 0, (LPDWORD)&dwThreadIDC); / 创建线程 D hThreadHandleD = CreateThread(0, 0, (LPTHREAD_ST

11、ART_ROUTINE) ThreadD, (LPVOID)this, 0, (LPDWORD)&dwThreadIDD); 非互斥运行:void CThreadDlg:OnThreadnomutex() / 创建线程 c hThreadHandleE = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) ThreadE, (LPVOID)this, 0, (LPDWORD)&dwThreadIDE); / 创建线程 D hThreadHandleF = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) ThreadF

12、, (LPVOID)this, 0, (LPDWORD)&dwThreadIDF); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告6 结束线程:void CThreadDlg:OnThreadnomutex2() TerminateThread(hThreadHandleA, 0); TerminateThread(hThreadHandleB, 0); TerminateThread(h

13、ThreadHandleC, 0); TerminateThread(hThreadHandleD, 0); TerminateThread(hThreadHandleE, 0); TerminateThread(hThreadHandleF, 0); 三、 实验结果实 验 总 结这次实验刚开始完全不知道怎么做,后来在同学的帮助下有了实验的思路,通过这次实验我对Windows中的线程及进程如何创建有了一定的了解,有一定的收获名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 计算机科学与工程学院操作系统实验报告8 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

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

当前位置:首页 > 技术资料 > 技术总结

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

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