the end philo one

This commit is contained in:
Denis 2021-05-16 01:41:18 +03:00
parent dc72e9fd05
commit e102f3c553
2 changed files with 11 additions and 16 deletions

View File

@ -16,7 +16,7 @@ void *run_trhead(t_philo *philo)
{ {
if (philo->count_eat == philo->all_struct->number_of_times_each_philosopher_must_eat) 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); cycle(philo);
@ -68,6 +68,8 @@ int run_observer(t_all *all)
{ {
i = 0; i = 0;
while(i <= all->number_of_philosophers) while(i <= all->number_of_philosophers)
{
if (all->smert != 42)
{ {
time_eat = (ft_get_time() - all->start_time) - all->data_philo->philors[i].last_eat; time_eat = (ft_get_time() - all->start_time) - all->data_philo->philors[i].last_eat;
if (time_eat > all->time_to_die) // TODO пофиксить смерть if (time_eat > all->time_to_die) // TODO пофиксить смерть
@ -75,6 +77,11 @@ int run_observer(t_all *all)
printf("%ld---------------симуляция окончена фил %d умер ---------------\n", ft_get_time() - all->start_time, i + 1); printf("%ld---------------симуляция окончена фил %d умер ---------------\n", ft_get_time() - all->start_time, i + 1);
return(2); return(2);
} }
}
else
{
return(2);
}
i++; i++;
} }
} }

View File

@ -81,17 +81,9 @@ void run_all_phils(t_all *all)
{ {
int i; int i;
i = 0; i = 0;
char *str;
void *philo; void *philo;
while(i <= all->number_of_philosophers) 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]); philo = (void*)(&all->data_philo->philors[i]);
if (pthread_create(&all->data_philo->philors[i].thread, NULL, (void*)run_trhead, philo) == -1) 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++; i++;
} }
if (i > 0)
{
free(str);
}
} }