1
0

🏗️」 wip: testing things, might broke.

This commit is contained in:
2024-08-06 17:42:36 +02:00
parent 930867803d
commit 074ce180b7
13 changed files with 149 additions and 92 deletions

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/22 21:24:53 by adjoly #+# #+# */
/* Updated: 2024/07/26 15:15:13 by adjoly ### ########.fr */
/* Updated: 2024/07/31 22:10:31 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -16,39 +16,40 @@
void take_fork(t_fork *fork, int id)
{
if (id % 2)
{
if (id % 2 && !(&fork->left == fork->right))
pthread_mutex_lock(&fork->left);
}
else
{
else if (!(id % 2))
pthread_mutex_lock(fork->right);
}
}
void *philo_routine(void *content)
{
t_philo philo;
t_philo *philo;
bool death;
int i = 0;
philo = *(t_philo *)content;
gettimeofday(&(philo.t0), NULL);
while (i < philo.data.meal_nbr)
philo = content;
gettimeofday(&(philo->eat), NULL);
philo->meal_left = get_meal_nb(philo->data.meal_nbr, philo->data.no_meal);
while (1)
{
philo.state = FORK_TAKEN;
take_fork(&philo.fork, philo.id);
log_philo(philo);
take_fork(&philo.fork, philo.id + 1);
log_philo(philo);
philo.state = EAT;
log_philo(philo);
death = sleep_phil(philo.data.eat_time, philo.check);
if (eat(philo) == true)
break ;
// unlock pas les fourchet si po la
pthread_mutex_unlock(&philo->fork.left);
pthread_mutex_unlock(philo->fork.right);
if (philo->data.no_meal == false)
philo->meal_left--;
philo->state = SLEEP;
log_philo(*philo);
death = sleep_phil(*philo);
if (death == true)
break ;
if (!philo->meal_left)
return (NULL);
pthread_mutex_unlock(philo.fork.right);
pthread_mutex_unlock(&philo.fork.left);
i++;
philo->state = THINK;
log_philo(*philo);
}
philo->state = DEAD;
log_philo(*philo);
return (NULL);
}