⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l-thread_fifo_so.c

📁 An exercise with thread of C. If you want to explore this programming language you must know the th
💻 C
字号:
#include "in.h"#define TRENI_MAX	500/*Il binario*/pthread_mutex_t condition_mutex=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t condition_cond=PTHREAD_COND_INITIALIZER; void waiting(int min, int max){ sleep(rand()%(max-min+1) + min);}int  occupabinario(int id){ pthread_mutex_lock(&condition_mutex);// {printf ("#-#-# Il Binario è occupato aspetto #-#-#\n",id); return -1;}printf ("#-#-# Il treno ~%d~ occupa i binari #-#-#\n",id);return 0;}void * gestione_dei_binari(void * i){printf ("-> Il treno %d è arrivto in stazione<-\n",(int)(i));occupabinario((int)(i));pthread_cond_signal(&condition_cond);//aiting(0,2);printf ("#-#-# Il treno ~%d~ libera i binari #-#-#\n",(int)(i));pthread_mutex_unlock(&condition_mutex);}void *stazione (void *num_treni){  int i;    struct  { int id;    pthread_t treno;  }treni[(int)(num_treni)];  /*creo i binari*/  /*Qui arrivano i treni e si creano i thread che li simulano*/  while(1){ for (i=1;i<(int)(num_treni)+1;i++)  {   treni[i].id=i;  if (pthread_create(&treni[i].treno,NULL,gestione_dei_binari,(void *)(treni[i].id)))     {   perror("pthread_thread_create");   exit(-1);  }    }/*Aspetto che i thread che simulano i treni finiscano il loro lavoro e passino tutti*/ for (i=1; i<(int)(num_treni)+1; i++)    if (pthread_join(treni[i].treno, NULL)){    perror("Pthread_join");    exit(0);}}//non capisco se lascio pthread_join worka come con la pthread_exit perhcè ?// pthread_exit((void *) 0);}int main(int argc, char *argv[]){   pthread_t station;   int rc;   pthread_attr_t attr;   if (argc<2) {   printf ("[*] L-thread : Usage ./l-thread num_trains [*]\n");   exit(0);   }   /*setto gli attributi per il thread che gestisce la stazione*/   pthread_attr_init(&attr);   pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);      rc = pthread_create(&station, &attr, stazione, (void *)(atoi(argv[1])));      if (rc){        perror("pthread_create"); 	exit(-1);      }pthread_join(station,NULL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -