latest commit
This commit is contained in:
parent
b1db9fe912
commit
8346d011dd
@ -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;
|
||||
|
||||
|
||||
@ -10,9 +10,13 @@ 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();
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user