资源简介
读入第一个参数为线程数,第二个参数为N,积分法计算pi,C+pthread实现,附结果比较表
代码片段和文件信息
#include
#include
#include
#include
#include
#define max_threads 512
double local_res[max_threads];
int num_threads num_per_thread N;
void *compute_pi(void *id) {
int index = *((int *)id);
int begin = index * num_per_thread;
int end;
if(index == num_threads - 1)
end = N;
else
end = begin + num_per_thread - 1;
int i;
double lc = 0.0;
for(i = begin;i <= end;i++){
double tmp = (i + 0.5) / N;
tmp = tmp * tmp + 1;
tmp = 4 / (N * tmp);
lc += tmp;
}
local_res[index] = lc;
}
int main(int argcchar *argv[]) {
pthread_t p_threads[max_threads];
double result = 0.0;
int i;
int *tmp;
struct timeval tv;
double time_start time_end;
num_threads = atoi(argv[1]);
N = atoi(argv[2]);
num_per_thread = N / num_threads;
gettimeofday(&tv NULL);
time_start = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
for(i = 0;i < num_threads;i++) {
tmp = (int *)malloc(sizeof(int));
*tmp = i;
pthread_create(&p_threads[i] NULL compute_pi (void *)tmp);
}
for(i= 0;i < num_threads;i++) {
pthread_join(p_threads[i] NULL);
result += local_res[i];
}
gettimeofday(&tv NULL);
time_end = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
printf(“Computed PI = %lf\n“ result);
printf(“Time Consuming: %lf\n“ time_end - time_start);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1389 2009-12-12 23:10 线程ipc\pi.c
文件 22528 2009-12-12 22:59 线程ipc\res.xls
目录 0 2009-12-12 21:00 线程ipc
----------- --------- ---------- ----- ----
23917 3
- 上一篇:树莓派串口通信
- 下一篇:以太网ENC28J60 tcp udp
相关资源
- BCB多线程BCB多线程
- Linux课程设计多线程聊天,有图形界面
- linux多线程实现矩阵乘法
- 多线程sock5代理
- 基于Qt的多线程工具
- 睡觉的理发师问题Linux下运行
- QTcpServer实现多客户端连接
- 多线程下无同步和同步的简单对比
- 并行计算——结构·算法·编程 习题答
- TCP多线程服务器
- 基于fortran95,openMP的并行计算 中文版
- 通过减少问题规模形式,做并行计算
- MPI并行计算教程与
- 可以查看多线程cpu占用率的工具
- Linux下多线程判断九宫格是否有效
- 消消乐自动求解
- OpenMP程序
- libevent多线程
- 并行计算——结构·算法·编程习题答
- 多线程字符串代码文件搜索器
- 多线程读者阅览室课程设计
- 多线程自动化syn&udp flood攻击集成工具
- 实现一个数据单元,包括学号和姓名
- vc定时器和多线程的简单应用
- 面向对象与多线程综合实验报告
- 易语言多线程获取网络时间源码
- 基于多线程和SOCKET聊天室V05
- 使用多线程技术,模拟通过四个窗口
- 关于QT多线程子线程使用信号和槽
- linux上实现多进程和多线程实现同步互
评论
共有 条评论