/* ************************************************************************** */ /* */ /* ::: o_ :::::: ::: */ /* main.c :+: / :+::+: :+: */ /* +:+ > +:++:+ +:+ */ /* By: whaffman +#+ +:+ +#++#++:++#++ */ /* +#+ +#+#+ +#++#+ +#+ \o/ */ /* Created: 2025/01/20 14:26:48 by whaffman #+#+# #+#+# #+# #+# | */ /* Updated: 2025/01/28 17:29:39 by whaffman ### ### ### ### / \ */ /* */ /* ************************************************************************** */ #include "philo.h" int main(int argc, char *argv[]) { t_rules rules; if (FAILURE == parse_arguments(argc, argv, &rules)) return (print_usage(), EXIT_FAILURE); if (FAILURE == create_philos(&rules)) return (printf(ERROR_MALLOC), EXIT_FAILURE); if (FAILURE == create_mutexes(&rules)) return (printf(ERROR_MUTEX), EXIT_FAILURE); rules.start_time = get_time() + START_DELAY; pthread_mutex_lock(rules.finished_lock); if (FAILURE == create_threads(&rules)) return (printf(ERROR_THREADS), EXIT_FAILURE); pthread_mutex_unlock(rules.finished_lock); if (FAILURE == join_threads(&rules)) return (printf(ERROR_THREADS), EXIT_FAILURE); if (FAILURE == destroy_mutexes(&rules)) return (printf(ERROR_MUTEX), EXIT_FAILURE); free_philos(&rules); return (EXIT_SUCCESS); }