Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int makni_radne_dretve ( void *dretve )
- {
- radne_dretve_t *skup;
- int i;
- skup=dretve;
- pthread_mutex_lock(&rd_brava);
- skup->kraj=1;
- pthread_mutex_unlock(&rd_brava);
- pthread_cond_broadcast(&skup->red);
- cekaj_dovrsetak_poslova(skup, 1);
- for(i=0; i<skup->broj; ++i) {
- pthread_join(skup->iddr[i], NULL);
- }
- pthread_mutex_lock(&rd_brava);
- if(skup==rd_prvi) {
- rd_prvi=skup->iduci;
- if(rd_prvi==NULL) rd_zadnji=NULL;
- }
- else if(skup==rd_zadnji) {
- radne_dretve_t *prethodni=rd_prvi;
- while(prethodni->iduci != skup) {
- prethodni=prethodni->iduci;
- }
- rd_zadnji=prethodni;
- rd_zadnji->iduci=NULL;
- }
- else {
- radne_dretve_t *prethodni=rd_prvi;
- while(prethodni->iduci != skup) {
- prethodni=prethodni->iduci;
- }
- prethodni->iduci=skup->iduci;
- }
- pthread_mutex_unlock (&rd_brava);
- pthread_mutex_destroy(&skup->brava);
- pthread_cond_destroy(&skup->red);
- pthread_cond_destroy(&skup->gotovo);
- free(skup);
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement