#include "/usr/lib/gcc/i686-linux-gnu/4.6/include/omp.h"
#include <iostream>
#include<list>
using namespace std;
int main()
{
list<int> lst;
for(int i=0;i<5;i++)
lst.push_back(i);
#pragma omp parallel for
for(int i=0;i<5;i++)
{
cout<<i<<" "<<omp_get_thread_num()<<endl;
}
}
假设我可以得到这个:
0 0
1 0
2 0
3 1
4 1
但是,有时我可以得到这个结果:
30 0
1 0
2 0
1
4 1
甚至是这种结果:
30 1 0
4 1
1 0
2 0
我知道这是因为输出代码:
cout<<i<<" "<<omp_get_thread_num()<<endl;
已经被拼接成小段,做输出时没有顺序。但是谁能告诉我如何防止这种情况发生?谢谢。