Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yabtaour
GitHub Repository: yabtaour/Philosophers-42
Path: blob/master/philo/ft_eat.c
882 views
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* ft_eat.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: yabtaour <[email protected]> +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2022/05/19 15:25:59 by yabtaour #+# #+# */
9
/* Updated: 2022/05/19 15:26:02 by yabtaour ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
#include "philosophers.h"
13
14
void ft_eat(t_philo *philosopher)
15
{
16
pthread_mutex_lock(philosopher->right_fork);
17
ft_output(philosopher->data, philosopher->philo_id, "has taken a fork");
18
pthread_mutex_lock(philosopher->left_fork);
19
ft_output(philosopher->data, philosopher->philo_id, "has taken a fork");
20
ft_output(philosopher->data, philosopher->philo_id, "is eating");
21
philosopher->last_meal = ft_timestamp();
22
ft_sleep(philosopher->data->time_to_eat, philosopher->data);
23
philosopher->data->total++;
24
pthread_mutex_lock(&philosopher->data->eat);
25
philosopher->eat++;
26
pthread_mutex_unlock(&philosopher->data->eat);
27
pthread_mutex_unlock(philosopher->right_fork);
28
pthread_mutex_unlock(philosopher->left_fork);
29
}
30
31