#include <stdio.h>
#include <omp.h>

int var = -1;
#pragma omp threadprivate(var)

int main ()
{
  int shared_var;
  printf ("shared:%p private:%p %d\n", &shared_var, &var, var);
  #pragma omp parallel
  {
    var = omp_get_thread_num ();
    printf ("1st %2d:   shared:%p private:%p %d\n",
            omp_get_thread_num (), &shared_var, &var, var);
  }
  #pragma omp parallel
  {
    printf ("2nd %2d:   shared:%p private:%p %d\n",
            omp_get_thread_num (), &shared_var, &var, var);
  }
  printf ("shared:%p private:%p %d\n", &shared_var, &var, var);
  return 0;
}