示例#1
0
/*  barber thread
 */
void *barber_thread(void *context)
{
    /* calling the barber method */ 
    barber(); /* never returns */
    
    return 0;
}
示例#2
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);
}
示例#3
0
int main() {
  semaphore customer_waiting = 0;
  binary_semaphore barber_sleeping=1;
  parbegin
    barber();
    while(true) customer();
  parend;
  return 0;
}
示例#4
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;
}
示例#5
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;
}