多线程设计实例——Monte Carlo法估算圆周率

原理:

作一个2×2正方形的内切圆,其圆心假设为(0,0)(如下图所示)且半径为1,生成一系列随机点(x,y)且这些点必须在正方形内,在所产生的所有随机点中,有一些点会出现在圆内,然后通过以下公式估算圆周率π的值:

π = 4×(圆内点总数)/(点的总数)
在这里插入图片描述

主要使用的头文件:

pthread.h头文件下的各类函数及变量:

//pthread.h头文件
#include<pthread.h>
//定义线程变量
typedef uintptr_t pthread_t;
//线程的创建
int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
//等待线程执行完成
int pthread_join(pthread_t thread, void **retval);
//定义互斥锁变量
typedef void *pthread_mutex_t;
//互斥锁的初始化
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
//或者使用以下宏定义直接赋值
#define PTHREAD_MUTEX_INITIALIZER (pthread_mutex_t)GENERIC_INITIALIZER
//申请互斥锁
int pthread_mutex_lock(pthread_mutex_t *m);
//释放互斥锁
int pthread_mutex_unlock(pthread_mutex_t *m)
//销毁互斥锁
int pthread_mutex_destroy(pthread_mutex_t *m);

time.h头文件下的各类函数及变量:

//time.h头文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值