#include /* produit.c */ #include #include #include /*********** Data Type ***********/ typedef enum { STATE_WAIT, STATE_MULT, STATE_ADD, STATE_PRINT } State; typedef struct { State state; int * pendingMult; pthread_cond_t cond; pthread_mutex_t mutex; size_t nbIterations; size_t size; double * v1; double * v2; double * v3; double result; } Product; /*********** Data structure ***********/ Product prod; /*********** Function ***********/ void initPendingMult(Product * prod) { size_t i; for(i=0;isize;i++) { prod->pendingMult[i]=1; } } int nbPendingMult(Product * prod) { size_t i; int nb=0; for(i=0;isize;i++) { nb+=prod->pendingMult[i]; } return(nb); } void wasteTime(unsigned long ms) { unsigned long t,t0; struct timeval tv; gettimeofday(&tv,(struct timezone *)0); t0=tv.tv_sec*1000LU+tv.tv_usec/1000LU; do { gettimeofday(&tv,(struct timezone *)0); t=tv.tv_sec*1000LU+tv.tv_usec/1000LU; } while(t-t0