并行计算.rar

  • Ankoven
    了解作者
  • C/C++
    开发工具
  • 107KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-03-20 10:01
    上传日期
使用三种多线程并行计算的方法计算pi值,内附c++可执行源码
并行计算.rar
  • 幂级数法
  • bin
  • Debug
  • 幂级数法.exe
    124.9KB
  • obj
  • Debug
  • main.o
    6.2KB
  • 幂级数法.layout
    358B
  • 幂级数法.cpp
    949B
  • 幂级数法.cbp
    1.1KB
  • 概率法
  • bin
  • Debug
  • 概率法.exe
    71.5KB
  • obj
  • Debug
  • main.o
    4.6KB
  • 概率法.cpp
    1.1KB
  • 概率法.layout
    358B
  • 概率法.cbp
    1.1KB
  • 积分法
  • bin
  • Debug
  • 多线程计算PI值.exe
    72.4KB
  • obj
  • Debug
  • main.o
    7KB
  • 多线程计算PI值.cbp
    1.1KB
  • 多线程计算PI值.layout
    358B
  • 积分法.cpp
    961B
内容介绍
#include<windows.h> #include<stdio.h> #include<time.h> #include<math.h> #define POINT_NUM 10000000//点的数目,尽量不适用N、M这些会出现命名冲突 #define THREAD_NUM 10 //线程数 DWORD Thread(int *pData) { double x, y; srand(time(NULL)); for(int i = 0; i < POINT_NUM / THREAD_NUM; i++) { x = (double)(1.0 * rand() / RAND_MAX); y = (double)(1.0 * rand() / RAND_MAX); if(pow(x, 2) + pow(y, 2) <= 1.0) (*pData) += 1; } return 0; } int main() { double pi; int count[THREAD_NUM]; int total=0; HANDLE h[THREAD_NUM]; for(int i=0;i<THREAD_NUM;i++) { count[i]=0; h[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Thread, &count[i], 0, NULL); if(h[i] == NULL) printf("CreateThread Thread%d Error!\n",i); Sleep(1000); } WaitForMultipleObjects(THREAD_NUM,h,TRUE,INFINITE); for(int i = 0; i < THREAD_NUM; i++) { total+=(count[i]); } pi = 4.0 * total / POINT_NUM; printf("pi:%f\n",pi); return 0; }
评论
    相关推荐