.页眉. .页脚实验一 Windows 多线程编程一、实验目的与要求了解 windows 多线程编程机制掌握线程同步的方法二、实验环境和软件 Windows XP VC 三、实验内容创建线程: HANDLE CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); 四、实验程序#include"" #include<> #include<> #include<iostream> #include<fstream> using namespace std; void ThreadFrunc1(PVOID param) { .页眉. .页脚 while(1) { Sleep(1000); cout<<"This is ThreadFrunc1"<<endl; }} void ThreadFrunc2(PVOID param) { while(1) { Sleep(1000); cout<<"This is kjj ThreadFrunc2"<<endl; }} int main() { int i=0; _beginthread(ThreadFrunc1,0,NULL); _beginthread(ThreadFrunc2,0,NULL); Sleep(3000); cout<<"end"<<endl; return 0; } 实验结果实验二蒙特卡罗法求 PI 一、. .页脚蒙特卡洛算法可理解为通过大量实验,模拟实际行为,来收集统计数据。本例中,算法随机产生一系列点,模拟这些点落在如下图所示的正方形区域内的情况。其几何解释如下图1 如图 1 所示, 正方形边长为 1, 左下顶点与原点重合, 两边分别与 x,y轴重合。曲线为 1/4 圆弧,圆心位于原点,与正方形左下定点重合,半径为 1。正方形面积 S1=1 , 圆弧内面积 S2=??4 14 1 2?r 。算法模拟大量点随机落在此正方形区域内, 落在圆弧内的点的数量( n2) 与点的总数( n1) 的比例与面积成正比关系。即? 4 2 12 1??S Sn n (1) 由此可得 1 24n n??(2) 因此,只要计算出落在圆弧内的点的数量在点总数中所占的比例,就能求出?的值。由图 1 可知, 所有点均落在正方形范围内, 因此点的 x 坐标满足 10??x 。又,当点落在圆弧范围内,则点的二维坐标关系满足 1 22??yx 。检验每一个点是否满足此关系即可判定改点是否落在圆弧内。.页眉. .页脚二、实验环境和软件编译器: Microsoft Visual Studio C++ 操作系统: Windows XP 三、实验内容 串行算法本项目中使用了标准 C 语言库中的产生随机数函数。该函数原型为: int rand( void ); 此函数产生随机数列,每次调用时均返回 0到 RAND_MAX 之间的一个整数。 void srand( unsigned int seed ); 此函数为 rand () 函数所生成的伪随机数序列设置起始点, 使之产生不同的伪随机数。算法: 产生 2n 个随机数据, 范围[0, 1], 对每个数据点计算其坐标是否满足 1 22??yx , 统计满足此关系的点的数量 count , 则 n count 4 ?? 并行算法描述算法步骤: 1 、确定需要产生的点的个数 n ,参与运行的处理器数 m; 2 、对每一个处理器,生成两个随机数 x,y ,范围[0, 1]; 3 、判断两个随机数 x,y 是否满足 1 22??yx ; 4 、若满足,则变量 COUNTi++ ; 5 、重复步骤 2-4 ,直至每个处理器均生成 n/m 个随机点; 6 、收集 COUNTi 的值,并累加至变量 COUNT 中,此即为随机点落在圆弧内的数量; 7 、通过( 2 )式计算?的值。 并行算法在 Windows . .页脚#include<> #include<> #include <> //#include <> #include <iostream> #include <fstream> #include<> using namespace std; HANDLE evFi
燕山大学多核程序设计实验报告 来自淘豆网m.daumloan.com转载请标明出处.