资源简介
天津大学并行计算实验报告第一二次的实验,最好还是自己动手做啊,这个只是用来参考的。而且这么简单的实验,有抄袭的必要么?那也太弱了。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;/*初始化条件变量*/
long long maxn ; //计算规模
double ans = 0; //结果
long long pnum = 10;//线程数
long long maxn2; //
long long over; //线程结束数
struct node{ //保存每个线程计算的起点和终点
long long beginend;
};
void *thread(void*xx) //线程执行指令
{
double x = 0yy;
node y = *(node*)xx;
long long maxn1 = (long long)maxn*maxn;
for(long long i = y.begin;i < y.end; i++) //每个线程的计算任务
{
x += 1.0/(maxn1+(i+0.5)*(i+0.5));
}
pthread_mutex_lock(&mutex); //加锁更新总结果以及更新线程结束的个数
ans += x;
over++;
pthread_mutex_unlock(&mutex);//解锁
void *statu;
pthread_exit(&statu);//结束线程
}
int main(int argc char*argv[])
{
struct timeval tv;
gettimeofday(&tv NULL);
double time_start time_end; //保存程序开始时间和结束时间
//获取当前开始时间
time_start = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
pnum = atoi(argv[1]); //获取线程数
maxn = atoi(argv[2]); //获取数据规模
pthread_t pid[1000]; //保存线程id
node xx[1000];
maxn2= (long long )maxn*maxn;
over = 0;
//给每个线程分配计算的开始和结束位置,并创建线程
long long begin = 0 length = (maxn+pnum-1)/pnum;
for(long long i = 0;i < pnum; i++)
{
xx[i].begin = begin;
xx[i].end = min((long long)maxnbegin+length);
begin = begin+length;
pthread_create(&pid[i]NULLthread&xx[i]);
}
while(over != pnum) {usleep(5);} //查看是否所有线程完成任务
ans = 4.0*ans*maxn;
pthread_mutex_destroy(&mutex);
gettimeofday(&tv NULL); //获取当前结束时间
time_end = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
//输出结果
printf(“pnum:%lld scale:%lld the pi result:%0.10lf thetimecost:%lf\n“pnummaxnanstime_end-time_start);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 154624 2014-03-28 20:49 1_多线程求pi - 副本.doc
文件 1350144 2014-03-28 20:49 2_多线程求卷积 - 副本.doc
目录 0 2014-03-20 09:29 test1\
文件 371 2014-03-18 10:41 test1\shell1.txt
文件 2188 2014-03-20 08:50 test1\test1.cpp
目录 0 2014-03-20 09:29 test2\
文件 71 2014-03-20 13:26 test2\2.txt
文件 525798 2014-03-21 12:37 test2\dataout0.txt
文件 526769 2014-03-21 12:37 test2\dataout1.txt
文件 527484 2014-03-21 12:37 test2\dataout2.txt
文件 527492 2014-03-21 12:37 test2\dataout3.txt
文件 527501 2014-03-21 12:37 test2\dataout4.txt
文件 3096826 2014-03-21 14:10 test2\dataout5.txt
文件 2691 2014-03-21 15:06 test2\test2.cpp
- 上一篇:高数课本基础知识整理
- 下一篇:射频通信原理
相关资源
- 西工大模电实验报告
- 网页浏览器+实验报告
- 北京科技大学 计算机网络实验报告
- 数据结构数组稀疏矩阵及广义表、递
- 留言板实验报告
- RC一阶电路的响应测试--实验报告
- 北邮 计算机网络 滑动窗口协议 选择
- 人工智能 一字棋 实验报告
- 八皇后问题实验报告.pdf
- 广工操作系统实验报告
- 西北工业大学软件工程WebServices实验报
- 超市管理系统UML建模+完整实验报告
- 瑞萨RL78G13_嵌入式系统原理及应用实验
- VOIP SIP实验报告
- 实验报告4连续时间LTI系统的复频域分
- 广东工业大学数据库实验报告包含4个
-
xm
l实验报告78072 - 广工操作系统实验报告文档+代码+可执
- 天津大学计算机考研复试攻略.pdf
- 机组满分实验报告.rar
- 小型超市管理系统实验报告.docx
- 电磁场虚拟实验报告北理工
- 机器学习实验(Lasso求解算法预测波士
- 东北大学软件学院操作系统实验报告
- FM调制与解调labview源代码以及USRP进行
- mit jos lab4代码及其实验报告
- 中科大软院软件系统测试实验报告3
- 南昌大学汇编实验报告
- 软件测试实验报告
- inSAR实验报告
评论
共有 条评论