You are on page 1of 1

#include <omp.

h>
#include <stdio.h>

// 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);
}
}

You might also like