/* barber thread */ void *barber_thread(void *context) { /* calling the barber method */ barber(); /* never returns */ return 0; }
int main() { n=10; if((mutex=semget(IPC_PRIVATE,1,0666|IPC_CREAT))==-1) { printf("error in creation of semaphore\n"); exit(1); } if((semctl(mutex,0,SETVAL,1))==-1) { printf("erroe in settting value\n"); exit(1); } if((custc=semget(IPC_PRIVATE,1,0666|IPC_CREAT))==-1) { printf("error in creation of semaphore\n"); exit(1); } if((semctl(custc,0,SETVAL,1))==-1) { printf("erroe in settting value\n"); exit(1); } if((shm=(shmget(IPC_PRIVATE,n*sizeof(int),0666|IPC_CREAT)))==-1) { printf("error in creation of shared memory\n"); exit(1); } ARR=(int *)shmat(shm,(void *)0,0); if((f=(shmget(IPC_PRIVATE,sizeof(int),0666|IPC_CREAT)))==-1) { printf("error in creation of shared memory\n"); exit(1); } if((r=(shmget(IPC_PRIVATE,sizeof(int),0666|IPC_CREAT)))==-1) { printf("error in creation of shared memory\n"); exit(1); } if((c=(shmget(IPC_PRIVATE,sizeof(int),0666|IPC_CREAT)))==-1) { printf("error in creation of shared memory\n"); exit(1); } cid=(int *)shmat(c,(void *)0,0); front=(int *)shmat(f,(void *)0,0); rear=(int *)shmat(r,(void *)0,0); int k,i; for(i=0;i<n;i++) { k=fork(); if(k==0) customer(i+1); } barber(1); exit(0); }
int main() { semaphore customer_waiting = 0; binary_semaphore barber_sleeping=1; parbegin barber(); while(true) customer(); parend; return 0; }
int main() { semaphore customer_waiting = 0; binary_semaphore barber_sleeping=1, seats_mutex=1; int free_seats = 5; // bombard barber with customers parbegin barber(); while(true) customer(); parend; return 0; }
int main(const int argc, const char* argv[]) { struct server s; s.port = DEFAULT_PORT; // Process user arguments. process_args(&s, argv, argc); #ifdef DEBUG fprintf(stderr, "Server: Creating barber process.\n"); #endif int pid = fork(); if (pid == -1) { perror("Error while creating barber process"); return EXIT_FAILURE; } if (!pid) { // Barber (child) process. barber(); } else { // Ignore SIGCHLD. signal(SIGCHLD, SIG_IGN); // Initialize server socket and bind it. if (server_init(&s, s.port) == -1) { perror("Error while init. of server"); return EXIT_FAILURE; } printf("Server is running on port: %d\n", s.port); server_start(&s); // Run Forest, run! // Stop server, free memory and wait. server_stop(&s); } // Try removing semaphores. int semaphores = semaphores_init(getuid()); semctl(semaphores, 0, IPC_RMID, NULL); return EXIT_SUCCESS; }