требуется написать программу для многопоточного вычисления числа пи по формуле 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 Подскажите что не так делаю?