Path: blob/master/philo/ft_create_philosophers.c
882 views
/* ************************************************************************** */1/* */2/* ::: :::::::: */3/* ft_create_philosophers.c :+: :+: :+: */4/* +:+ +:+ +:+ */5/* By: yabtaour <[email protected]> +#+ +:+ +#+ */6/* +#+#+#+#+#+ +#+ */7/* Created: 2022/05/19 23:36:39 by yabtaour #+# #+# */8/* Updated: 2022/05/19 23:36:42 by yabtaour ### ########.fr */9/* */10/* ************************************************************************** */11#include "philosophers.h"1213void ft_destroy(t_data *data)14{15int i;1617i = 0;18pthread_mutex_destroy(&data->output);19pthread_mutex_destroy(&data->eat);20while (i < data->philos_num)21{22pthread_detach(data->philosopher[i].thread_id);23pthread_mutex_destroy(data->philosopher[i].right_fork);24pthread_mutex_destroy(data->philosopher[i].left_fork);25i++;26}27}2829int ft_join_destroy(t_data *data)30{31int i;3233i = 0;34if (ft_check_dead(data))35{36ft_destroy(data);37free(data);38return (0);39}40while (i < data->philos_num)41{42if (pthread_join(data->philosopher[i].thread_id, NULL) != 0)43{44free(data);45return (0);46}47i++;48}49return (1);50}5152int ft_create_philosophers(t_data *data)53{54int i;5556i = 0;57data->birth = ft_timestamp();58while (i < data->philos_num)59{60data->philosopher[i].last_meal = ft_timestamp();61data->n = &data->philosopher[i];62if (pthread_create(&data->n->thread_id, NULL, &routine, data->n) != 0)63{64free(data);65return (0);66}67usleep(100);68i++;69}70if (!ft_join_destroy(data))71return (0);72return (1);73}747576