#include #include /* Programm zur parallelen Berechung des Skalarproduktes zweier Vektoren mit Hilfe von pthreads 1) dümmste Version mit Zugriff auf die globale Summe in jeder Iteration */ 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) { int p = * (int*)p_address; for (int i=p*N/P; i<(p+1)*N/P; i++) { // enter critical section pthread_mutex_lock(&lock); // update sum sum += x[i] * y[i]; // leave critical section pthread_mutex_unlock(&lock); } } int main() { // init vectors for (int i=0; i