POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程。利用多线程可以提高运算速度。利用pthread进行数组求和的程序如下:
#include <stdio.h>
#include <pthread.h>
#define ARRAY_SIZE 1000
#define NUM_THREADS 10
int g_array[ARRAY_SIZE];
int g_index = 0;
int g_sum = 0;
pthread_mutex_t mutex1=PTHREAD_MUTEX_INITIALIZER;
void* slave (void* index)
{
int partsum =0;
int localindex = (int) index * ARRAY_SIZE/NUM_THREADS;
int i;
for(i=0; i< ARRAY_SIZE/NUM_THREADS; i++)
partsum +=g_array[localindex+i];
pthread_mutex_lock(&mutex1);
g_sum += partsum;
pthread_mutex_unlock(&mutex1);
}
int main ()
{
int i;
pthread_t thread[NUM_THREADS];
pthread_mutex_init (&mutex1, NULL);
for (i=0;i<ARRAY_SIZE;i++)
g_array[i]=i+1;
for (i=0;i<NUM_THREADS;i++)
{
if(pthread_create(&thread[i], NULL, slave, (void*)i))
perror("Pthread Create Fails");
}
for (i=0;i<NUM_THREADS;i++)
{
if(pthread_join(thread[i], NULL))
perror("Pthread Join Fails");
}
pthread_mutex_destroy(&mutex1);
printf("The sum of 1 to %d is %d\n", ARRAY_SIZE, g_sum);
return 0;
}