《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 页 - - - - - - - - -