




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验2线程同步机制一、实验目的:通过观察共享数据资源但不受控制的两个线程的并发输出结果,了解同步机制的必要性和重要性。 并且利用现有的操作系统提供的同步机制来实现对这两个线程的有规律的控制,同时基于同步机制的Peterson软件解决方案能够以程序形式实现自己解决与同步机制相同的问题,从而减少程序执行时间二、实验设计I根据规定的银行帐户间转帐操作模拟代码,作为线程执行代码,在主线程上创建2个同时线程,进行程序的实现和执行结果的观察和说明。利用Windows互斥信号量计算函数解决上述线程同步问题,分析、尝试和讨论线程执行体中信号量计算函数调用的正确位置。通过III同步机制的Peterson软件解决方案,以独特的编程实现了线程同步机制和上述线程同步问题的解决,根据程序执行时间的长短,与基于Windows互斥信号量的线程同步机制的效率进行了比较。 在此期间,规定线程体代码循环执行1000000次.三、源程序清单和说明1不使用排他信号量#include#include#includeint nAccount1=0,nAccount2=0;int nLoop=0;int nTemp1,nTemp2,nqam;dwordwinapithreaddfunc (掌上电脑)装模作样do装模作样nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand ();ncaccount1=ntemp1nqam;ncaccount2=ntemp2-nqam;nLoop; while (nAccount1 nAccount2)=0)printf (循环次数为%dn ,nLoop );return 0;以下称为int main ()装模作样HANDLE Thread2;Thread0=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL );Thread1=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL );WaitForMultipleObjects(2,Thread,TRUE,INFINITE )CloseHandle(Thread )return 0;以下称为利用Windows互斥信号量#include#include#include#define COUNT 1000000int nAccount1=0,nAccount2=0;HANDLE mutex;dwordwinapithreaddfunc (掌上电脑)装模作样int nLoop=0;int nTemp1,nTemp2,nqam;WaitForSingleObject(mutex、INFINITE )do装模作样nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand ();ncaccount1=ntemp1nqam;ncaccount2=ntemp2-nqam;nLoop;ReleaseMutex(mutex )WaitForSingleObject(mutex、INFINITE )以下称为while (n account1n account2)=0NP loop count )ReleaseMutex(mutex )WaitForSingleObject(mutex、INFINITE )printf (循环次数为%dn ,nLoop );ReleaseMutex(mutex )return 0;以下称为int main ()装模作样HANDLE Thread2;DWORD start,end;start=GetTickCount ();mutex=CreateMutex(NULL,FALSE,NULL )Thread0=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL );Thread1=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL );WaitForMultipleObjects(2,Thread,TRUE,INFINITE )end=GetTickCount ();printf (总经过时间%ldn ,结束-开始);CloseHandle(Thread )CloseHandle(mutex )return 0;以下称为三同步机制的Peterson#include#include#include#define COUNT 1000000int nAccount1=0,nAccount2=0,flag2,turn;int nLoop=0;int nTemp1,nTemp2,nqam;/HANDLE mutex;void request (int id )装模作样int other=1 - id;flagid=1;turn=other;while (flag other =1turn=other ) 以下称为dwordwinapithreaddfunc0(handle thread )装模作样request(0)do装模作样nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand ();ncaccount1=ntemp1nqam;ncaccount2=ntemp2-nqam;nLoop;flag0=0;request(0)以下称为while (n account1n account2)=0NP loop count )flag0=0;request(0)flag0=0;printf (循环次数为%dn ,nLoop );return 0;以下称为dwordwinapithreaddfunc1(掌上电脑)装模作样request(1)do装模作样nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand ();ncaccount1=ntemp1nqam;ncaccount2=ntemp2-nqam;nLoop;flag1=0;request(1)以下称为while (n account1n account2)=0NP loop count )flag1=0;request(1)flag1=0;printf (循环次数为%dn ,nLoop );return 0;以下称为int main ()装模作样HANDLE Thread2;DWORD start,end;start=GetTickCount ();thread 0=createthread (空,0,ThreadFunc0,空,0,空);thread 1=createthread (空,0,ThreadFunc1,空,0,空);WaitForMultipleObjects(2,Thread,TRUE,INFINITE )end=GetTickCount ();printf (总经过时间%ldn ,结束-开始);CloseHandle(Thread )return 0;以下称为四、算法与关键数据结构设计1 .银行帐户间转帐操作模拟int nAccount1=0,nAccount2=0; /使用主线程序创建的全局变量int nLoop=0;int nTemp1,nTemp2,nqam;do装模作样nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand ();ncaccount1=ntemp1nqam;ncaccount2=ntemp2-nqam;nLoop; while (nAccount1 nAccount2)=0)printf (循环次数为%dn ,nLoop );2 .进程互斥算法1设置访问编号Var turn: integer :=i;repeatwhile turni do no_op;临界区turn:=j;untiuntilffalse;3 .进程互斥算法2访问标志的设置Var flagi,flagj :布尔:=假,假;repeatwhile flagj do no_op;flagi :=true;临界区flagi :=假;untiuntilffalse;4 .进程排他算法3设置访问标志Var flagi,flagj :布尔:=假,假;repeatflagi :=true;while flagj do no_op;临界区flagi :=假;untiuntilffalse;5 .过程排他算法4号标志Var flagi,flagj: boolean;turn: integer;repeatflagi :=true; turn :=j;while (flagj and turn=j) do no_op;临界区flagi :=假;untiuntilffalse;五、实验过程中间结果的截图实验结果1不使用排他信号量利用Windows互斥信号量三同步机制的Peterson结果分析1如果不应用互斥信号量来同时控制线程,则执行时会出错。Windows互斥信号量允许两个接入线程同时正确运行。 100万次汇款成功。 但是,系统的时间开销变大了。 时间效率差。应用三同步机制的Peterson算法,两个线程都可以顺利并行运行,成功进行100万次汇款,但相对于Windows互斥信号量,时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产20万吨氟化系列产品生产项目实施方案(参考模板)
- 锂电池回收利用项目可行性研究报告
- 《傲慢与偏见》读书心得 15篇
- 光伏装配示范复合项目可行性研究报告(参考范文)
- 河北省部分高中2023-2024学年高三上学期12月期末考语文含解析
- 安徽省名校联盟2023-2024学年高三上学期实验班12月大联考英语含解析
- 江苏航运职业技术学院《建筑与装饰工程施工》2023-2024学年第二学期期末试卷
- 喀什理工职业技术学院《城乡生态与环境规划》2023-2024学年第二学期期末试卷
- 安徽广播影视职业技术学院《纺织品实验与设计》2023-2024学年第二学期期末试卷
- 湖南工业大学《机械控制工程基础》2023-2024学年第二学期期末试卷
- 教科版三年级下册科学全册同步练习(一课一练)
- 浙江省“温州八校”2025届高考语文三模试卷含解析
- 医院食堂营养餐实施方案
- 2024中国房企数字化产品力白皮书
- 《地方文化资源在幼儿园中开发利用的比较研究》
- 水泥基材料改性研究-洞察分析
- 海外商务代理委托合同三篇
- 3-1-绝缘安全用具、验电器的使用方法
- 【MOOC】信号与系统-哈尔滨工业大学 中国大学慕课MOOC答案
- 安规线路培训
- 2024劳动法律法规培训
评论
0/150
提交评论