南京邮电大学操作系统——实验一(附加):利用多线程计算Π值

本文通过实验对比了单次和多次计算π值的效率,分析了多线程在不同CPU核心数下的性能表现。实验结果显示,在多核心环境下,多线程能加速计算,但调度成本增加。同时,讨论了rand和rand_r函数在多线程环境下的行为,指出rand在Windows下非线程安全,但在Linux环境下是线程安全的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境

  • Windows10
  • Ubuntu 18.04
  • VisualCode

实验记录

第一步:单次计算 π \pi π

算法如下:

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<time.h>

int intervals=1000;  //控制随机点的个数

int main()
{
   
   clock_t start,delta;  //用于统计程序运行时间
   start=clock();  
   unsigned seed=time(NULL);
   int circle_points=0;
   int i;
   double pi;
   
   for(i=0;i<intervals*intervals;i++)
   {
   
double rand_x=(double)rand_r(&seed)/RAND_MAX; 
      double rand_y=(double)rand_r(&seed)/RAND_MAX;        
     
if((rand_x*rand_x+rand_y*rand_y)<=1)
      {
   
           circle_points++;
      }
    }
   
   pi=(4.0*circle_points)/i;
   
   printf("Cirlce points:%d, total_points:%d, the estimated PI is %lf\n",circle_points, i, pi);
   
   delta=clock
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值