/* A simple example with 4 threads */
#include <pthread.h>
#include <unistd.h>
double a[1000];
static void init()
{
int i;
for(i=0;i<1000;i++) a[i] = (double)i;
}
static void *th(void *v)
{
double sum = 0.0;
int i,j;
for(j=0;j<1000;j++)
for(i=0;i<1000;i++)
sum += a[i];
*( (double*)v ) = sum;
/* make sure that no threads is so fast that it finishes
* before last thread is created, thus reusing the TID */
sleep(1);
return 0;
}
int main()
{
pthread_t t[4];
double sum[4];
int i;
init();
for(i=0;i<4;i++)
pthread_create(&t[i], NULL, th, &sum[i]);
for(i=0;i<4;i++)
pthread_join(t[i], NULL);
return 0;
}