C++程序  |  48行  |  650 B

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