emp3hack icon

Untitled

emp3hack | PRO | 02/04/16 07:56:51 PM UTC | 0 ⭐ | 562 👁️ | Never ⏰ | []
text |

1.22 KB

|

None

|

0 👍

/

0 👎

/* Codice usato per problemi di sincronizzazione dove � necessario gestire un problema di priorit�  creando una coda e facendo si che i vip abbiano la precedenza sui clienti nella coda. */  sem_t coda;pthread_mutex_t m_vip_in_coda;int vip_in_coda = 0;  sem_t nuovocliente; void* cliente(void* args){  sem_wait(&vip); // Se c'� un vip attendo.. pft  sem_wait(&coda);//Faccio la fila   //Tocca a me, lascio la coda!  sem_post(&coda);  sem_post(&nuovocliente);// Segnalo che ci sono }void* vip(void* args){  //Avviso tutti che c'� almeno un vip ;)  pthread_mutex_lock(&m_vip_in_coda);  vip_in_coda++;  if(vip_in_coda == 1)    sem_wait(&vip);  pthread_mutex_unlock(&m_vip_in_coda);  //Avvisati tutti i non vip adesso devono attendere e non entrano in concorrenza con me (che bello essere un vip!)  sem_wait(&coda);  //Tocca a me!  //Libero il posto in coda ed eventualmente se sono l'ultimo VIP avviso tutti che possono provare a entrare  pthread_mutex_lock(&m_vip_in_coda);  if(vip_in_coda == 0)    sem_post(&vip);  pthread_mutex_unlock(&vip_in_coda);  // Uscito dalla coda vado dove necessario, es gestore:  sem_post(&nuovocliente);// Segnalo che ci sono  } void* gestore(void * args){  sem_wait(&nuovocliente); }

Comments