-5
私はPIの価値を見積もるC++プログラムを持っています。 2スレッドまたは4スレッドの間でタスクを分割する方法はありますか?このC++プログラムをマルチスレッド化する方法は?
int main(int argc, char** argv)
{
double N = 10000000
int i, K = 0;
float pi;
srand(time(NULL));
for(i = 0; i < N; ++i)
{
double x = rand()/(double)INT_MAX;
double y = rand()/(double)INT_MAX;
if (x*x + y*y < 1)
{
K++;
}
}
pi = K*4/N;
return 0;
}
置き換える/(ダブル) Nを定数* idNで置き換え、powをx * xに置き換え、INT_MAXをdouble定数に置き換えて、マルチスレッド化前の速度を上げてください。 –
スレッドごとにローカルアキュムレータを1つ持ち、その結果を最後に集計します。 –
なぜあなたはINT_MAXで割りますか?そのアルゴリズムはまったく機能しますか? –