37 lines
1.6 KiB
C
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);
|
|
}
|