Многопоточное вычисление числа пи
От: zombiecomatozzz  
Дата: 11.12.10 13:20
Оценка: :))) :))) :))) :))) :))
требуется написать программу для многопоточного вычисления числа пи по формуле pi/4=1-1/3+1/5-1/7+... Попробовал вот так:

#include "stdafx.h"
#include "iostream."
#include "windows.h"
using namespace std;

const DWORD NUM_THREAD = 8;
int n=0;
double pi=0;
HANDLE hMutex;
int k=-1;
DWORD WINAPI ThreadProc()
{
    while(n<1000000)
    {
        WaitForSingleObject(hMutex, INFINITE);
        k*=-1;
        pi+=k*4./(2*n+1);
        n++;
        ReleaseMutex(hMutex);
    }
    return 1;
}

int main()
{
    hMutex = CreateMutex( NULL, FALSE, NULL );
    for(int i=0; i<NUM_THREAD; i++)                    
    CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) ThreadProc,0,0,0);   
    cout<<pi;
    cin.get();
}


получаются всегда разные значения и не слишком точные. например 3.13413 Подскажите что не так делаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.