实验2线程同步机制

实验2线程同步机制

ID:28197276

大小:125.88 KB

页数:9页

时间:2018-12-07

实验2线程同步机制_第1页
实验2线程同步机制_第2页
实验2线程同步机制_第3页
实验2线程同步机制_第4页
实验2线程同步机制_第5页
资源描述:

《实验2线程同步机制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验2线程同步机制一、实验目的:通过观察共享数据资源但不受控制的两个线程的并发运行输出结果,体会同步机制的必要性和重要性。然后利用现有操作系统提供的同步机制编程实现关于该两个线程的有序控制,同时要求根据同步机制的Peterson软件解决方案尝试自己编程实现同步机制和用丁•同一问题的解决,并基于程序运行时间K短比较两种同步机制。二、实验设计I基于给定银行账户间转账操作模拟代码作为线程执行代码,在主线程中创建两个并发线程,编程实现并观察程序运行结果和予以解释说明。II利用Windows互斥信号量操作函数解决上述线程并发问题,并分析、尝试和讨论线程执行体中有关信号量操作函数调用

2、的正确位置。III根据同步机制的Peterson软件解决方案尝试自己编程实现线程同步机制和用于上述线程并发问题的解决,并基于程序运行时间长短将其与基于Windows互斥信号量的线程同步机制的效率展开比较。其间,可规定线程主体代码循环执行1000000次三、源程序清单和说明1未利用互斥信号量#include^include//includeintnAccountl=0,nAccount2=0;intnLoop=0;intnTempl,nTemp2,nRandom;DWORDWINAPIThreadFunc(HAND

3、LEThread){do{nTempl=nAccountl;nTemp2=nAccount2;nRandom=rand();nAccountl=nTempl+nRandom;nAccount2=nTemp2-nRandom;nLoop++;}while((nAccountl+nAccount2)==0);printf("循环次数为%d",nLoop);return0;}intmain(){HANDLEThread[2];Thread[0]=CreateThread(NULL,O,ThreadFunc,NULL,0,NULL);Thread[l]=CreateThrea

4、d(NULL,O,ThreadFunc,NULL,0,NULL};WaitForMultipleObjects(2,Thread,TRUE,INFINITE);CloseHandle(Thread);return0;2利用Windows互斥信号量//include〈windows.h>#include#include#defineCOUNT1000000intnAccountl=0,nAccount2=0;HANDLEmutex;DWORDWINAPIThreadFunc(HANDLEThread){intnLoop=0;intnTe

5、mpl,nTemp2,nRandom;WaitForSingleObject(mutex,INFINITE);do{nTempl=nAccountl;nTemp2=nAccount2;nRandom=rand();nAccountl=nTempl+nRandom;nAccount2=nTemp2-nRandom;nLoop++;ReleaseMutex(mutex);WaitForSingleObject(mutex,INFINITE);}while((nAccountl+nAccount2)==0&&nLoop

6、itForSingleObject(mutexJNFINITE);printf("循环次数为%d",nLoop);ReleaseMutex(mutex);return0;}intmain(){HANDLEThread[2];DWORDstart,end;start=GetTickCount();mutex=CreateMutex(NULL,FALSE,NULL);Thread[0]=CreateThread(NULL,O,ThreadFunc,NULL,0,NULL);Thread[l]=CreateThread(NULL,O,ThreadFunc,NULL,0,NU

7、LL};WaitForMultipleObjects(2,Thread,TRUE,INFINITE);end=GetTickCount();printf("总共用时%ld",end-start);CloseHandle(Thread);CloseHandle(mutex);return0;}3同步机制的Peterson#include〈windows.h>^include^include#defjneCOUNT1000000intnAccountl=0,nAccount2=0,flag

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。