#include #include // not using iostream here due to output ordering issues // iostream tends to output each part between <<'s separately to the console, // which can lead to random output if multiple threads are doing the same // thing. // printf will generally output the whole result string in one go, so results // of separate printf calls, even from different threads, will remain intact // Another fix, other than using printf, would be to give each thread its own // place to store output temporarily (a stringstream), and then output the whole // result in one go. int main() { #pragma omp parallel num_threads(2) printf("Hi, I'm thread number %d!\n",omp_get_thread_num()); #pragma omp parallel for num_threads(2) for(int i = 0;i < 20;i++) { printf("\nThread number %d, executing iteration %d...",omp_get_thread_num(),i); } }