关于c++命令行输出的问题,迷茫。。。
在学习pthread多线程的过程中遇到了让我头疼不已的问题。
#include <iostream> #include <pthread.h> #include <stdio.h> int n = 10000000; int t = 4; int l = n/t; double sum[4]={0,0,0,0}; void* pi_thread(void* i) { int k = *(int *)i; for(int j=k*l;j<k*l+l;j++){ double o = (j+0.5)/n; sum[k] += 4.0/(1.0+o*o); } sum[k] /= n; printf("Thread %d returns value %f\n",k,sum[k]); return NULL; } int main() { int i; double ans = 0; pthread_t tid[10]; int id[10]; for(i=0;i<t;i++){ id[i] = i; pthread_create(&tid[i], NULL, pi_thread, &id[i]); } for(i=0;i<t;i++){ pthread_join(tid[i],NULL); ans += sum[i]; } printf("%f\n",ans); return 0; }
一个多线程求pi的程序,本来很简单,但是输出结果却是这样的:
我找了很久的原因,发现去掉#include <iostream>,就变正常了。
但是还是不明白其中的道理。
希望有大牛看到能帮我解答一下。