博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vs2008环境下pthread程序的编译运行——以多线程求π为例
阅读量:5822 次
发布时间:2019-06-18

本文共 1731 字,大约阅读时间需要 5 分钟。

一、准备工作

首先从  

下载pthreads-w32-2-9-1-release.rar,解压后得到Pre-built.2文件夹

将其中的lib文件夹和include文件夹内容分别放到vs2008相应位置。

将其中dll文件夹中的文件与编译生成的exe放在同一目录下(一般为vs2008工程目录的Dubug或Release目录)。

二、程序编写

求π值近似公式:

 

程序源代码如下:

1 // exp1_pi.cpp : 定义控制台应用程序的入口点。 2 // 3 #include "stdafx.h" 4 #include
5 #include
6 #include
7 using namespace std; 8 9 #pragma comment (lib,"pthreadVC2.lib")10 11 int n = 0;12 int threadnum = 0;13 double sum = 0;14 15 //初始化锁变量16 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;17 18 //线程函数,根据线程rank确定自身计算范围,进行计算,并将计算结果加至全局变量sum中19 void* Thread_sum(void* rank)20 {21 long my_rank = (long) rank;22 double factor;23 double my_sum = 0;24 long long i; 25 long long my_n = n/threadnum;26 long long my_first_i = my_n * my_rank;27 long long my_last_i = my_first_i + my_n;28 29 if(my_first_i % 2 ==0)30 factor = 1.0;31 else32 factor = -1.0;33 34 for(i = my_first_i; i < my_last_i; i++, factor = -factor)35 {36 my_sum += factor/(2*i+1);37 }38 39 //使用锁变量,保证对sum赋值操作的互斥性40 pthread_mutex_lock(&mutex);41 sum += my_sum;42 pthread_mutex_unlock(&mutex);43 44 return NULL;45 }46 47 int main(int argc, char *argv[]) {48 49 50 //从main函数接收参数,n为问题规模,threadnum为线程个数51 //n = atoi(argv[1]);52 //threadnum=atoi(argv[2]);53 n = 10000;54 threadnum = 8;55 56 pthread_t *calculator = new pthread_t[threadnum];57 58 //启动各个线程59 for(int rank = 0; rank < threadnum; rank++)60 {61 pthread_create(&calculator[rank],NULL,Thread_sum,(void*)rank); 62 }63 64 //主线程等待所有线程结束65 for(int j = 0;j

三、程序运行结果

转载于:https://www.cnblogs.com/rufa/archive/2013/05/09/3069037.html

你可能感兴趣的文章
曾鸣:区块链的春天还没有到来| 阿里内部干货
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
js之无缝滚动
查看>>
Django 多表联合查询
查看>>
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
ntpdate时间同步
查看>>
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>