#include <cstdlib>
#include <omp.h>
#include <cstdio>
#include <thread>
#define THREADS 4
#define N 16
int main ( ) {
int i;
#pragma omp parallel for num_threads(THREADS) schedule(dynamic)
for (i = 0; i < N; ++i) {
printf("Thread %d is doing iteration %d.\n", omp_get_thread_num( ), i);
std::this_thread::sleep_for( std::chrono::milliseconds( 10*i ) );
}
return 0;
}
//Thread 2 is doing iteration 0.
//Thread 2 is doing iteration 4.
//Thread 3 is doing iteration 1.
//Thread 0 is doing iteration 2.
//Thread 1 is doing iteration 3.
//Thread 3 is doing iteration 5.
//Thread 0 is doing iteration 6.
//Thread 1 is doing iteration 7.
//Thread 2 is doing iteration 8.
//Thread 3 is doing iteration 9.
//Thread 0 is doing iteration 10.
//Thread 1 is doing iteration 11.
//Thread 2 is doing iteration 12.
//Thread 3 is doing iteration 13.
//Thread 0 is doing iteration 14.
//Thread 1 is doing iteration 15.
//
//Total:
// thread 0: 2+6+10+14=32
// thread 1: 3+7+11+15=36
// thread 2: 0+4+8+12=24
// thread 3: 1+5+9+13=28