diff --git a/philo_one/includes/philo_header.h b/philo_one/includes/philo_header.h index 79be4a3..f7cdfa6 100644 --- a/philo_one/includes/philo_header.h +++ b/philo_one/includes/philo_header.h @@ -56,7 +56,6 @@ int runner(t_all *all, int optional); int return_big(int a, int b); int return_less(int a, int b); time_t ft_get_time(void); -unsigned long ft_time_is(void); void *run_trhead(t_philo *philo); int prepare_resources(t_all *all); int check_all_run(t_all *all); diff --git a/philo_one/srcs/logic.c b/philo_one/srcs/logic.c index 568181a..b7c5938 100644 --- a/philo_one/srcs/logic.c +++ b/philo_one/srcs/logic.c @@ -32,11 +32,13 @@ void take_forks(t_philo *philo) void eating(t_philo *philo) { pthread_mutex_lock(&philo->eat_mutex); + philo->is_eat = 1; philo->last_eat = ft_get_time(); philo->limit = philo->last_eat + philo->all_struct->time_to_die; messages(philo->all_struct, philo, "eating"); usleep(philo->all_struct->time_to_eat * 1000); philo->count_eat++; + philo->is_eat = 0; pthread_mutex_unlock(&philo->eat_mutex); } void sleeping(t_philo *philo) @@ -62,41 +64,23 @@ void cycle(t_philo *philo) int run_observer(t_all *all) { int i; - int died; time_t time; i = 0; - died = 0; time = ft_get_time(); while(1) { i = 0; while(i <= all->number_of_philosophers) { - if (!all->data_philo->philors[i].is_eat && ft_get_time() > all->data_philo->philors[i].limit) { // TODO пофиксить смерть - printf("симуляция окончена фил умер\n"); + + printf("симуляция окончена фил %d умер\n", i + 1); exit(0); } - - if (all->data_philo->philors[i].died == 0) - { - time = ft_get_time(); - i++; - } - else - { - died = 42; - break; - } - } - if (died == 42) - { - printf("симуляция окончена фил умер\n"); - break; - } + } } return (0); } diff --git a/philo_one/srcs/utilc.c b/philo_one/srcs/utilc.c index 18d6bf8..c6d8bcf 100644 --- a/philo_one/srcs/utilc.c +++ b/philo_one/srcs/utilc.c @@ -96,13 +96,3 @@ time_t ft_get_time(void) return (return_value); } - -unsigned long ft_time_is(void) -{ - static struct timeval tv; - - gettimeofday(&tv, NULL); - return ((tv.tv_sec * (unsigned long)1000) + (tv.tv_usec / 1000)); -} - -