实验一多线程计算pi值

实验一多线程计算pi值

ID:22790938

大小:78.50 KB

页数:6页

时间:2018-10-31

实验一多线程计算pi值_第1页
实验一多线程计算pi值_第2页
实验一多线程计算pi值_第3页
实验一多线程计算pi值_第4页
实验一多线程计算pi值_第5页
资源描述:

《实验一多线程计算pi值》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验一、多线程计算PI值1.实验要求•将串行的积分法计算PI值程序改进成多线程层序•解决同步问题2.实验环境VisualC++6.03.计算方法矩形法则的数值积分方法估算pi的值1.串行的积分法计算PI值通过for循环,一个个的把sum值相加。实现代码如下:林includettincludeconstlongnum=10000000;doublestep,PI;clocktstartTineLStopTine;//开始、结束时间uoidnain()//串行程浮没计

2、ck();step=1.0/(double)nun;for(i=0;i

3、m值,所以在这里要使用临界区,把sum放到临界区中,这样一次只能有一个线程访问和修改sum的值。实现代码如下:DWORDUINAPIparallel(LPUOIDpArg)

4、);//离开临界区}return0;1.运行结果并行程序运行结果:三上多獄多^MultiThreading302DebugMultiThreading302.exe"-PI=3.141593算时间:1743Pressanykeytocontinue串行程序运行结果:••0:伏三上多^多^1711]ltiThreadingDebugMultil[PI=3.141593$十算时间:62Pressanykeytocontinue1.实验结果的分析运行结果显示,串行的计算时间比并行的计算时间短。可能是因为分割的小矩形的数量不够大所导致的。就像人

5、们出安全通道一样,如果人数较多的话,那么大家抢着走,显然出去的速度是很慢的,如果大家排队,井然有序的出,那么效率显然会提高很多的。2.附代码并行代码林include林include林include林includestaticlongnun=10000000;〃分割的小长方形数量constintnumThread=4;〃开启的钱程数doublestep,PI;clock_tstartTine,stopTime;〃开雄、结束时间CRITICAL_SECTIONzone;〃临界区声

6、明崔doublesun=0.0;DWORDWINAPIparallel(LPUOIDpArg)doublex;inttenp=*(int*)pArg;intstart=(tenp*nun)/4;intend=start+num/4;for(inti=start;i〈end;i++){EnterCriticalSection(fezone);//进入临界区x=(i+0.5)*step;sun=sun+4.0/(1.0+x*x);LeaueCriticalSection(&zone);return0;uoidmain()inti;HANDLEhThread[

7、nunThread];step=1.0/(double)num;inttNun[nunThread];InitializeCriticalSection(PxZone);//初始化临界区startTine=clock();//开始时间for(i=0;iWaitForMultipleObjects(nunThread,hThread,TRUE,INFINITE);DeleteC

8、riticalSection(&zone);//翻除stopTine=clock

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

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

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