diff --git a/philo_one/srcs/logic.c b/philo_one/srcs/logic.c index a99cb52..2d6a97e 100644 --- a/philo_one/srcs/logic.c +++ b/philo_one/srcs/logic.c @@ -16,7 +16,7 @@ void *run_trhead(t_philo *philo) { if (philo->count_eat == philo->all_struct->number_of_times_each_philosopher_must_eat) { - exit(0); // TODO реализовать завершение программы + philo->all_struct->smert = 42; // TODO реализовать завершение программы } } cycle(philo); @@ -69,10 +69,17 @@ int run_observer(t_all *all) i = 0; while(i <= all->number_of_philosophers) { - time_eat = (ft_get_time() - all->start_time) - all->data_philo->philors[i].last_eat; - if (time_eat > all->time_to_die) // TODO пофиксить смерть + if (all->smert != 42) + { + time_eat = (ft_get_time() - all->start_time) - all->data_philo->philors[i].last_eat; + if (time_eat > all->time_to_die) // TODO пофиксить смерть + { + printf("%ld---------------симуляция окончена фил %d умер ---------------\n", ft_get_time() - all->start_time, i + 1); + return(2); + } + } + else { - printf("%ld---------------симуляция окончена фил %d умер ---------------\n", ft_get_time() - all->start_time, i + 1); return(2); } i++; diff --git a/philo_one/srcs/prepare_simulation.c b/philo_one/srcs/prepare_simulation.c index 861170b..6fab9e1 100644 --- a/philo_one/srcs/prepare_simulation.c +++ b/philo_one/srcs/prepare_simulation.c @@ -81,17 +81,9 @@ void run_all_phils(t_all *all) { int i; i = 0; - char *str; void *philo; while(i <= all->number_of_philosophers) { - if (i != 0) - { - free(str); - } - str = malloc(sizeof(char) * 80); - str[80] = 0; - sprintf(str, "t%d", i + 1); philo = (void*)(&all->data_philo->philors[i]); if (pthread_create(&all->data_philo->philors[i].thread, NULL, (void*)run_trhead, philo) == -1) { @@ -103,8 +95,4 @@ void run_all_phils(t_all *all) } i++; } - if (i > 0) - { - free(str); - } }