sem_t m1=1, m2=1, sync=0, syncMul=0; int n=0, s=0, mean=0, meanBlock=0; int sum(int x){ int ret; P(m1); if(meanBlock){ s=x; V(syncMul); ret = mean; P(sync); V(m1); return ret; }else{ s += x; n++; V(m1); P(sync); ret = mean; P(m2) n--; if(n==0) V(m1); V(m2); return ret; } } void mul(int m){ int c; P(m1); if(n>0){ mean = s*m; for (c=0; c