- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈工大软件学院并行程序设计课程实验报告之二
《并行程序设?计》课程实验报?告
实验2:基于Win?dows Threa?d和Ope?nMP的多?线程编程
姓名 *** 院系 软件学院 学号 ********** 任课教师 张伟哲 指导教师 苏统华 实验地点 软件学院五?楼机房 实验时间 2015年?4月8日 实验课表现? 出勤、表现得分 实验报告
得分 实验总分 操作结果得?分 一、实验目的 要求:需分析本次?实验的基本?目的,并综述你是?如何实现这?些目的的?
一、
1.。ual Studi?o* .NET*集成开发环?境的使用;
3、掌握Win?dows3?2 Threa?d API开发?多线程程序?;
4、掌握Win?
二、
.掌握Ope?;
掌握Ope?;掌握采用O?penMP?一、
2 Threa?ds\ Hello?Threa?ds\,用Micr?osoft? Visua?l studi?o打开文件?Hello?Threa?d.sln,编译并运行?程序;
2. 对main?.cpp中函?数进行修改?,要求输出线?程创建顺序?(例如:Hello? Threa?d 0, Hello? Threa?d 1, Hello? Threa?d 2 等等);
注意:利用Cre?ateTh?read()循环变量作?为每个线程?的执行顺序?唯一标识
3. 编译并多次?运行程序,记录线程执?行顺序,分析线程程?序执行顺序?是否不可预?见及其产生?原因
4. 定位到文件?夹Win3?2 Threa?ds\ Pi\,用Micr?osoft? Visua?l studi?o打开文件?Pi.sln,编译并运行?程序;
5. 对此串行代?码使用Wi?ndows?32 Threa?d API进行?线程化,要求4线程?实现,且每次迭代?计算仅由一?个线程完成?
6. 使用CRI?TICAL?_SECT?ION机制?和Sema?phors?机制对多线?程共享变量?进行互斥操?作,避免数据竞?争。
二、
rosof?t Visua?l Studi?o工具打开?实验程序文?件:
/Hello?world?s/Hello?world?s.c;
3、编译,运行程序并?记录实验结?果;
4、在源程序代?码中的找到?主程序体:
print?f(Hello? World?\n);
for(i=0;i6;i++)
print?f(Iter:%d\n,i);;
加上#pragm?a omp paral?lel
{
}段
5、采用/Qopen?mp重新编?译程序(使用Int?el编译器?,通过Int?el命令窗?口进入)
C:\icl /Qopen?mp Hello?World?s.c;
6、设定Ope?nmp线程?数:
C:\Set OMP_N?UM_TH?READS?=2;
7、重新运行程?序,观测实验结?果,并记录。
实验二 积分方法求?PI值的并?rosof?t Visua?l Studi?o工具打开?实验程序文?件:
/pi/pi.sln;
3、编译,运行程序并?记录实验结?果;
4、在源程序代?码中的找到?主程序体中?进行omp?方式优化
5、采用/Qopen?mp重新编?译程序;
三、实验结果 记录实验结?果。
2.1
一、
(1)
直接编译运?行:
(2)
打印数值
(3)
每次打印1?0个 Hello? ,会发现明显?的乱序执行?现象
(4)
运行程序
(5)
使用下面的?多线程代码?进行计算
#inclu?de windo?ws.h
#inclu?de stdio?.h
CRITI?CAL_S?ECTIO?N cSect?ion;
const? int numTh?reads? = 4;
stati?c long num_s?teps=10000?0;
doubl?e step, pi;
doubl?e x, sum = 0.0;
DWORD? WINAP?I hello?Func(LPVOI?D pArg)
{
int s = *(int *)pArg;
step = 1.0/(doubl?e) num_s?teps;
for (int i=s; i s + 25000?; i++){
x = (i+0.5)*step;
Enter?Criti?calSe?ction?(cSect?ion);
sum = sum + 4.0/(1.0 + x*x);
Leave?Criti?calSe?ction?(cSect?ion);
}
retur?n 0;
}
void main()
{
Initi?alize?Criti?calSe?ction?(cSect?ion);
HANDL?E hThre?ad
您可能关注的文档
- 医学毕业论文消毒供应室无菌物品质量监测.doc
- 医疗质量核心制度考核方案..doc
- 命题考点一 建筑工程项目施工进度控制方法的应用Application of construction progress control method in construction project test center.doc
- 专题小学数学课堂的有效导入.doc
- 分享云南省普通初中成长记录自我反思与评价.doc
- 吉林市创建全国文明城市工作情况汇报非常重要.doc
- 北海烟草人力资源用盖洛普Q进行员工满意度调查.doc
- 医院感染管理及医疗废物处理自查报告 .doc
- 医学毕业论文望诊遵经释疑.doc
- 北海烟草人力资源咨询—用盖洛普Q进行员工满意度调查.doc
文档评论(0)