#include <pthread.h>
#include <sched.h>
#include <unistd.h>

void *
worker (void *arg)
{
  long i;

  for (i = 0; i < 100000000; ++i)
    sched_yield ();	/* give other's a chance to run */
  return NULL;
}

int
main (int argc, char **argv)
{
  int i, nthreads = sysconf (_SC_NPROCESSORS_ONLN);
  pthread_t tid[nthreads];

  for (i = 0; i < nthreads; ++i)
    pthread_create (&tid[i], NULL, worker, (void *) (intptr_t) i);
  for (i = 0; i < nthreads; ++i)
    pthread_join (tid[i], NULL);
  return 0;
}
