latest commit

This commit is contained in:
Denis 2021-05-15 12:28:07 +03:00
parent b1db9fe912
commit 8346d011dd
3 changed files with 19 additions and 5 deletions

View File

@ -37,6 +37,7 @@ typedef struct s_philo
time_t last_eat;
time_t limit;
t_all *all_struct;
int is_eat;
pthread_mutex_t eat_mutex;
} t_philo;

View File

@ -10,8 +10,12 @@ void *run_trhead(t_philo *philo)
}
if (philo->can_run_simulation)
{
philo->last_eat = ft_get_time();
philo->limit = philo->last_eat + philo->all_struct->time_to_die;
while(philo->can_run_simulation)
{
cycle(philo);
}
}
return(NULL);
}
@ -69,6 +73,14 @@ int run_observer(t_all *all)
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");
exit(0);
}
if (all->data_philo->philors[i].died == 0)
{
time = ft_get_time();

View File

@ -5,7 +5,7 @@ int check_all_run(t_all *all)
int i;
i = 0;
while (i < all->number_of_philosophers)
while (i <= all->number_of_philosophers)
{
if (all->data_philo->philors[i].worked)
{
@ -22,7 +22,7 @@ void run_simulation(t_all *all)
int i;
i = 0;
while (i < all->number_of_philosophers)
while (i <= all->number_of_philosophers)
{
if (!all->data_philo->philors[i].can_run_simulation)
{
@ -38,7 +38,7 @@ void get_fork_for_philo(t_all *all)
i = 0;
while(i < all->number_of_philosophers)
while(i <= all->number_of_philosophers)
{
if (i == 0)
{
@ -55,6 +55,7 @@ void get_fork_for_philo(t_all *all)
all->data_philo->philors[i].worked = 0;
all->data_philo->philors[i].can_run_simulation = 0;
all->data_philo->philors[i].all_struct = all;
all->data_philo->philors[i].is_eat = 0;
i++;
}
}
@ -66,7 +67,7 @@ int prepare_resources(t_all *all)
i = 0;
all->data_philo = ft_calloc(sizeof(t_philo_data), 1);
all->data_philo->mutex = (pthread_mutex_t *)ft_calloc(sizeof(pthread_mutex_t), all->number_of_philosophers);
while (i < all->number_of_philosophers)
while (i <= all->number_of_philosophers)
{
pthread_mutex_init(&all->data_philo->mutex[i], NULL);
i++;
@ -82,7 +83,7 @@ void run_all_phils(t_all *all)
i = 0;
char *str;
void *philo;
while(i < all->number_of_philosophers)
while(i <= all->number_of_philosophers)
{
if (i != 0)
{