人人范文网 范文大全

任务3 同步对象解决临界问题

发布时间:2020-03-03 09:06:36 来源:范文大全 收藏本文 下载本文 手机版

1.基本信息

 实践题目:同步对象解决临界问题  完成人:

班级:07062301 姓名:陈杨

学号:0706230101

 报告日期 :2011年1月5日 2.实践内容简要描述

 实践目标

1.理解临界区问题

2.学会使用Win32所提供的同步对象(事件对象、互斥对象、信号量对象、临界区对象等)以解决临界区问题  实践内容

协作线程——兄弟问题 设置竞争条件:

定义两个全局变量:accnt1和accnt2,初值都为零; 创建两个线程acc1和acc2; (1)获得一个随机数

(2)从accnt1减去这个随机数; (3)将这个随机数加到accnt2中; (4)正确的话,accnt1+accnt2=0;

(5)但在未实现线程互斥的情况下,accnt1+accnt2可能不为0。 用临界区对象实现协作线程,以解决以上临界区问题——兄弟问题。  设计思路

利用临界区对象(CRITICAL_SECTION型),实现线程间的互斥。  主要数据结构

typedef struct BrotherInfo { int

miSerial; DWORD mdwDelay; } BROTHERINFO,*PBROTHERINFO;

volatile int giAccnt1 = 0; /* Ensure variable in the memory */ volatile int giAccnt2 = 0; CRITICAL_SECTION my_section;  主要代码结构及分析

//thread DWORD WINAPI Brother(LPVOID lpParam) { int iLoan, iAccnt,iCounter = 0; PBROTHERINFO pThreadInfo;

//get info from param pThreadInfo = (PBROTHERINFO)lpParam;

srand( (unsigned)pThreadInfo -> mdwDelay );

do { fprintf(stdout,\"I am thread %d , I am doing %05dth step\\n\",pThreadInfo -> miSerial,iCounter); iLoan = rand(); /* fprintf(stdout,\"rand_num = %05d \\n\",iLoan); */ //Sleep(pThreadInfo-> mdwDelay*INTE_PER_SEC);

EnterCriticalSection(&my_section); //等待进入临界区的授权

//start of critical_section giAccnt1 = giAccnt1 - iLoan; Sleep(pThreadInfo-> mdwDelay*INTE_PER_SEC); giAccnt2 = giAccnt2 + iLoan; iAccnt = giAccnt1 + giAccnt2; //end of critical_section

LeaveCriticalSection(&my_section);//释放对临界区的使用权

iCounter++; } while ( (iAccnt == 0) && (iCounter

fprintf(stdout,\"Now giAccnt1+giAccnt2 = %05d\\n\",iAccnt); return 0 ; } //End of Brother 3.实践结果

 基本数据 :

 源程序代码行数 :166  完成实践投入的时间(小时数):0.5  资料查阅时间:0.2  编程调试时间:0.3  测试数据设计

“ex3.dat”中测试数据为: 1 1 2 3  测试结果分析

利用临界区变量使两线程互斥访问临界区,giAccnt1+giAccnt2的和始终为0。等执行次数超过十次时才退出循环。执行结果正确。

4.实践体会

 实践过程中遇到的问题及解决过程

在链接过程中出现错误如下:

后发现是“Project—>Settings—>C/C++标签页—>Category:Code Genertion—>Use run-time library:”,此处一开始我选的是“Multithreaded”,而选择“Debug Multithreaded”则可避免上述问题  实践体会和收获

通过此次实验,我了解了临界区变量的使用方法及作用,并且相较而言,使用临界区变量比用软件方法解决兄弟问题要简单。在第二个任务的基础上,此次任务并没有花费太多的时间就得以完成。 5.参考文献

 [1]汤子灜著.《计算机操作系统》 (修订版) [M].西安:西安电子科技大学出版社.2000  [2] Abraham Silberschatz ,Peter Baer Galvin and Greg Gagne.郑扣根等译.操作系统概念 第六版,翻译版.[M].北京:高等教育出版社.2004

暂予监外执行适用对象法律冲突问题及其解决路径

毕业设计任务3

课程设计任务3

信用社稽核的对象和任务

《惊弓之鸟》同步练习(3)

3《乡愁》同步训练

解决农民工问题

解决作文问题

解决业务员问题

解决群众问题

任务3 同步对象解决临界问题
《任务3 同步对象解决临界问题.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档