create messages and fix qulvo phil

This commit is contained in:
Matthos Denys 2021-05-13 22:11:20 +03:00
parent bc188d8c05
commit 66c8025548
3 changed files with 23 additions and 1 deletions

View File

@ -17,6 +17,7 @@ typedef struct s_philo
int count_eat; int count_eat;
time_t time_to_die; time_t time_to_die;
int died; int died;
int nbr_philo;
pthread_mutex_t *eat_mutex; pthread_mutex_t *eat_mutex;
} t_philo; } t_philo;
@ -35,6 +36,7 @@ typedef struct s_all
int number_of_times_each_philosopher_must_eat; int number_of_times_each_philosopher_must_eat;
time_t start_time; time_t start_time;
t_philo_data *data_philo; t_philo_data *data_philo;
pthread_mutex_t write;
} t_all; } t_all;
void *ft_calloc(size_t num, size_t size); void *ft_calloc(size_t num, size_t size);

View File

@ -53,6 +53,7 @@ void get_fork_for_philo(t_all *all)
all->data_philo->philors[i].less_fork = return_less(i, i + 1); all->data_philo->philors[i].less_fork = return_less(i, i + 1);
} }
all->data_philo->philors[i].died = 0; all->data_philo->philors[i].died = 0;
all->data_philo->philors[i].nbr_philo = i;
i++; i++;
} }
} }
@ -104,6 +105,25 @@ void run_all_phils(t_all *all)
} }
} }
void philo_think(t_all *all, int i)
{
time_t time;
pthread_mutex_lock(&all->data_philo->mutex[all->data_philo->philors[i].less_fork]);
pthread_mutex_lock(&all->data_philo->mutex[all->data_philo->philors[i].more_fork]);
time = ft_get_time();
time = ft_get_time();
}
void messages(t_all *all, time_t *time, int phil, char *str)
{
pthread_mutex_lock(&all->write);
phil++;
printf("%lu %d %s\n", (unsigned long)time, phil, str);
pthread_mutex_unlock(&all->write);
}
int run_observer(t_all *all) int run_observer(t_all *all)
{ {
int i; int i;

View File

@ -33,7 +33,7 @@ int parse_param(t_all *all, int optional, char **argv)
{ {
if (optional) if (optional)
{ {
all->number_of_philosophers = ft_atoi(argv[1]); all->number_of_philosophers = ft_atoi(argv[1]) - 1;
all->time_to_die = ft_atoi(argv[2]); all->time_to_die = ft_atoi(argv[2]);
all->time_to_eat = ft_atoi(argv[3]); all->time_to_eat = ft_atoi(argv[3]);
all->time_to_sleep = ft_atoi(argv[4]); all->time_to_sleep = ft_atoi(argv[4]);