void* philosopher(void *num) {
    while (1) {
        int *i = num;
        sleep(1);
        take_fork(*i);
        sleep(0);
        drop_fork(*i);
    }
}
void *philospher(void *num){
    while(1){
        int *i =(int*)num;
        sleep(1);
        take_fork(*i);
        sleep(0);
        put_fork(*i);
    }
}
示例#3
0
void *philosopher(int *j){
  int i=*j;
  while(1){
    think(i);
    take_fork(i);
    eat(i);
    leave_fork(i);
  }
}
示例#4
0
void *philospher(void *num){
    while(1){
        int *i = num;
        sleep(1);
            take_fork(*i);
        sleep(0);
            put_fork(*i);
    }
}
示例#5
0
void philosoper(int i) { // i: philospher number, from 0 to 4
	while (true) {
		think();  // philisopher is thinking
		take_fork(i); // take left fork
		take_for((i + 1) % N); // take right fork; % is modulo operator
		eat(); // yum-yum, spaghetti
		put_fork(i); // put left fork back on the table
		put_fork((i + 1) % N); // put right fork back on the table
	}
}
void *philosopher_thread(void * arg) {
        int philosopher_id = (intptr_t)(arg);
        int second_fork_number = (philosopher_id+1)%PHILO_COUNT;
        for(;;) {
                printf("Philosopher %d is thinking\n", philosopher_id);
                usleep(rand() % THIKING_TIME);
                printf("Philosopher %d is waiting for forks \n", philosopher_id);
                sem_wait(&waiter);
                take_fork(philosopher_id);
                take_fork(second_fork_number);
                printf("Philosopher nr %d is eating\n", philosopher_id);
                usleep(rand() % EATING_TIME);
                putdown_fork(philosopher_id);
                putdown_fork(second_fork_number);
                sem_post(&waiter);
                printf("Philosopher nr %d finished eating\n", philosopher_id);
    }
    return NULL;
}
void *philosopher(void *arg)
{
	int num=*((int *)arg);
	while(1)
	{
		sleep(1);
		take_fork(num);
		put_fork(num);	
	}
}
void *philospher_activity(void *a_philo_pointer) {
    
    philo *this_philo = (philo*)a_philo_pointer;
    int iter=0,num_eat = 0;
    
    while( iter < M) {
        int *i = &(this_philo->phil_num); // address of this_pil_id
        sleep(1);
        take_fork(*i);
            sleep(0);
            printf("%s has eaten %d times till now \n",this_philo->phil_name,++num_eat);
        put_fork(*i);
        iter++;
    }
}
示例#9
0
// Eating
void Philosopher::eat(){
  take_fork();
  sleep(2); // eating
  put_fork();
}