/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* utils_2.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lfirmin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/11/22 14:20:46 by lfirmin #+# #+# */ /* Updated: 2025/03/17 04:00:06 by lfirmin ### ########.fr */ /* */ /* ************************************************************************** */ #include "../include/philo.h" long long get_time(void) { struct timeval time; if (gettimeofday(&time, NULL) == -1) return (write(2, "gettimeofday() error\n", 22), 0); return ((time.tv_sec * 1000) + (time.tv_usec / 1000)); } int print_message(t_philo *philo, char *message) { int is_dead; pthread_mutex_lock(&philo->data->dead_mutex); is_dead = philo->data->dead_flag; pthread_mutex_unlock(&philo->data->dead_mutex); if (is_dead) return (1); if (pthread_mutex_lock(&philo->data->print) != 0) return (1); pthread_mutex_lock(&philo->data->dead_mutex); is_dead = philo->data->dead_flag; pthread_mutex_unlock(&philo->data->dead_mutex); if (is_dead) return (pthread_mutex_unlock(&philo->data->print), 1); printf("%lld %lld %s\n", get_time() - philo->data->start_time, philo->id, message); pthread_mutex_unlock(&philo->data->print); return (0); }