Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. int makni_radne_dretve ( void *dretve )
  2. {
  3.     radne_dretve_t *skup;
  4.     int i;
  5.     skup=dretve;
  6.     pthread_mutex_lock(&rd_brava);
  7.     skup->kraj=1;
  8.     pthread_mutex_unlock(&rd_brava);
  9.     pthread_cond_broadcast(&skup->red);
  10.     cekaj_dovrsetak_poslova(skup, 1);
  11.     for(i=0; i<skup->broj; ++i) {
  12.         pthread_join(skup->iddr[i], NULL);
  13.     }
  14.     pthread_mutex_lock(&rd_brava);
  15.     if(skup==rd_prvi) {
  16.         rd_prvi=skup->iduci;
  17.         if(rd_prvi==NULL) rd_zadnji=NULL;
  18.     }
  19.     else if(skup==rd_zadnji) {
  20.         radne_dretve_t *prethodni=rd_prvi;
  21.         while(prethodni->iduci != skup) {
  22.             prethodni=prethodni->iduci;
  23.         }
  24.         rd_zadnji=prethodni;
  25.         rd_zadnji->iduci=NULL;
  26.     }
  27.     else {
  28.         radne_dretve_t *prethodni=rd_prvi;
  29.         while(prethodni->iduci != skup) {
  30.             prethodni=prethodni->iduci;
  31.         }
  32.         prethodni->iduci=skup->iduci;
  33.     }
  34.     pthread_mutex_unlock (&rd_brava);
  35.     pthread_mutex_destroy(&skup->brava);
  36.     pthread_cond_destroy(&skup->red);
  37.     pthread_cond_destroy(&skup->gotovo);
  38.     free(skup);
  39.     return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement