#include #include #include #include #define N 5 #define M 13 #define SLEEP 4 sem_t sem, mut; int linie[N], tren[M]; pthread_t tid[M]; //rutina unui thread void* trece(void* tren) { int i, s, t, l; t = *(int*)tren; s = 1 + rand() % SLEEP; // Modificati timpii de stationare sem_wait(&sem); sem_wait(&mut); // E necesar? for (l = 0; l < N; l++) if (linie[l] == -1) break; linie[l] = t; printf("Trenul %d pe linia %d pentru %d secunde. Trenuri in gara:", t, l, s); for (i=0; i