philosophers/philo/src/main.c
2025-01-28 17:31:56 +01:00

37 lines
1.6 KiB
C

/* ************************************************************************** */
/* */
/* ::: o_ :::::: ::: */
/* main.c :+: / :+::+: :+: */
/* +:+ > +:++:+ +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ */
/* +#+ +#+#+ +#++#+ +#+ \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);
}