#include "../includes/philo_header.h" void *test(char *str) { printf("поток %s отработал\n", str); return(NULL); } int func_test(t_all *all) { pthread_t t0; pthread_t t1; void *result; (void)all; if (pthread_create(&t0, NULL, (void*)test, "t0") == -1) // предпоследнее это функция и аргумент { printf("не могу создать поток t0\n"); } if (pthread_create(&t1, NULL, (void*)test, "t1") == -1) // предпоследнее это функция и аргумент { printf("не могу создать поток t1\n"); } if (pthread_join(t0, &result) == -1) { printf("не могу присоединиться к потоку t0\n"); } if (pthread_join(t1, &result) == -1) { printf("не могу присоединиться к потоку t1\n"); } return (0); } void get_fork_for_philo(t_all *all) { int i; i = 0; while(i <= all->number_of_philosophers) { if (i == 0) { all->data_philo->philors[i].left_fork = all->number_of_philosophers; all->data_philo->philors[i].right_fork = 0; } else { all->data_philo->philors[i].left_fork = i; all->data_philo->philors[i].right_fork = i + 1; } i++; } } int prepare_resources(t_all *all) { int i; i = 0; all->data_philo = ft_calloc(sizeof(t_philo_data), 1); all->data_philo->mutex = (pthread_mutex_t *)ft_calloc(sizeof(pthread_mutex_t), all->number_of_philosophers); while (i < all->number_of_philosophers) { pthread_mutex_init(&all->data_philo->mutex[i], NULL); i++; } all->data_philo->philors = (t_philo *)ft_calloc(sizeof(t_philo), all->number_of_philosophers); get_fork_for_philo(all); return (0); } int runner(t_all *all, int optional) { if (optional) { // func_test(all); prepare_resources(all); return(0); } else { return(1); } }