#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;
小さなセグメントにスプライスされており、出力を行うときに順序がありません。しかし、これを防ぐ方法を誰が教えてくれますか?ありがとう。