#include #include /* Programm zur parallelen Berechung des Skalarproduktes zweier Vektoren mit Hilfe von pthreads 2) verbesserte Version mit lokalen Variablen für die Summer */ const int N = 1000; const int P = 2; double x[N], y[N]; double sum; pthread_mutex_t lock; void* parallel_sum (void * p_address) { double local_sum = 0.0; int p = * (int*)p_address; for (int i=p*N/P; i<(p+1)*N/P; i++) { // update local sum local_sum += x[i] * y[i]; } // enter critical section pthread_mutex_lock(&lock); // update global sum sum += local_sum; // leave critical section pthread_mutex_unlock(&lock); } int main() { // init vectors for (int i=0; i