#include "philo.h" void print_message(t_philo *philo, char *msg) { pthread_mutex_lock(philo->m_print); ft_printf("%i %s\n", philo->philo_nbr, msg); pthread_mutex_unlock(philo->m_print); } void take_forks(t_philo *philo) { pthread_mutex_lock(&(philo->m_fork)); pthread_mutex_lock(&(philo->next->m_fork)); print_message(philo, "has taken a fork"); usleep(philo->params->t_eat); pthread_mutex_unlock(&(philo->next->m_fork)); pthread_mutex_unlock(&(philo->m_fork)); } void *philo_exec(void *arg) { t_philo *philo; philo = (t_philo*)arg; print_message(philo, "is thinking"); take_forks(philo); // eat // "has taken a fork" // "is eating" // sleep // "is sleeping" // think // "is thinking" // die // "died" //int i = 0; // while (i < 2) // { // if (!take_forks(philo)) // continue ; // // usleep(philo->params->t_eat); // // pthread_mutex_lock(&mutex); // philo->fork = 1; // philo->next->fork = 1; // ft_printf("%i is sleeping\n", philo->philo_nbr); // pthread_mutex_unlock(&mutex); // // usleep(philo->params->t_slp); // // pthread_mutex_lock(&mutex); // ft_printf("%i is thinking\n", philo->philo_nbr); // pthread_mutex_unlock(&mutex); // pthread_mutex_lock(philo->mutex); // pthread_mutex_lock(&mutex); // ft_printf("%i is thinking\n", philo->philo_nbr); // pthread_mutex_unlock(philo->mutex); // pthread_mutex_unlock(&mutex); // i++; // } return (NULL); }