#include #include #include #include #include #include "aux.h" #include "omp.h" long usecs (){ struct timeval t; gettimeofday(&t,NULL); return t.tv_sec*1000000+t.tv_usec; } void mysleep(double sec){ long s, e; s=0; e=0; s = usecs(); while(((double) e-s)/1000000 < sec) { e = usecs(); } return; } void init_data(data **datas, resource **resources, int ndatas, int nsteps){ int d, s; *datas = (data*) malloc(ndatas*sizeof(data)); *resources = (resource*) malloc(nsteps*sizeof(resource)); for (d=0; dbusy == -9){ r->busy = omp_get_thread_num(); if(r->i != s) { printf("Error!!! trying to use resource %d for step %d.\n",r->i,s); r->busy = -9; return; } if(datas[d].i == s-1){ t = 0.2/((double)r->nr); mysleep(t); datas[d].i = s; datas[d].v = datas[d].v*2 + s; } else { printf("Error!!! trying step %d on data %d but step %d is not done.\n",s,d,s-1); r->busy = -9; return; } r->busy = -9; } else { printf("Error!!! trying to use resource %d but it is busy.\n",r->i); } } void check_result(data *datas, int ndatas, int nsteps){ int d, s; long v; for (d=0; d