diff --git a/srcs/main.c b/srcs/main.c index 55fc1c6..c9064db 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,37 +6,18 @@ void *philo_exec(void *arg) philo = (t_philo*)arg; while (1) - { write(1, philo->str, ft_strlen(philo->str)); - write(1, " nb ", 4); - ft_putnbr_fd(philo->nbr, 1); - write(1, "\n", 1); - } } int main(void) { - pthread_t *tid; - int ret; - int n_philo; - int i; + pthread_t id; t_philo *philo; - n_philo = 3; - philo = malloc(sizeof(philo) * n_philo); - tid = malloc(sizeof(pthread_t) * n_philo); - i = 0; - while (i < n_philo) - { - philo[i].str = "i'm philosopher"; - philo[i].nbr = i; - ret = pthread_create(&tid[i], NULL, &philo_exec, &philo[i]); - i++; - } - if (ret == 0) - { - while (1) - write(1, "main function\n", 14); - } + philo = malloc(sizeof(philo)); + philo->str = "i'm philosopher\n"; + pthread_create(&id, NULL, &philo_exec, philo); + while (1) + write(1, "main function\n", 14); return 0; } diff --git a/srcs/main1_join.c b/srcs/main1_join.c new file mode 100644 index 0000000..c8cdaf7 --- /dev/null +++ b/srcs/main1_join.c @@ -0,0 +1,25 @@ +#include "philo.h" + +void *philo_exec(void *arg) +{ + t_philo *philo; + + philo = (t_philo*)arg; + while (1) + write(1, philo->str, ft_strlen(philo->str)); +} + +int main(void) +{ + pthread_t id; + t_philo *philo; + + philo = malloc(sizeof(philo)); + philo->str = "i'm philosopher\n"; + pthread_create(&id, NULL, &philo_exec, philo); + pthread_join(id, NULL); + while (1) + write(1, "main function\n", 14); + return 0; +} + diff --git a/srcs/main2_multithread.c b/srcs/main2_multithread.c new file mode 100644 index 0000000..17e556c --- /dev/null +++ b/srcs/main2_multithread.c @@ -0,0 +1,43 @@ +#include "philo.h" + +void *philo_exec(void *arg) +{ + t_philo *philo; + + philo = (t_philo*)arg; + while (1) + { + write(1, philo->str, ft_strlen(philo->str)); + write(1, " nb ", 4); + ft_putnbr_fd(philo->nbr, 1); + write(1, "\n", 1); + sleep (1); + } +} + +int main(void) +{ + pthread_t *tid; + int n_philo; + int i; + t_philo *philo; + + n_philo = 3; + philo = malloc(sizeof(philo) * n_philo); + tid = malloc(sizeof(pthread_t) * n_philo); + i = 0; + while (i < n_philo) + { + philo[i].str = "i'm philosopher"; + philo[i].nbr = i; + pthread_create(&tid[i], NULL, &philo_exec, &philo[i]); + i++; + } + while (1) + { + write(1, "main function\n", 14); + sleep (1); + } + return 0; +} + diff --git a/srcs/main3_mutex.c b/srcs/main3_mutex.c new file mode 100644 index 0000000..810a6c6 --- /dev/null +++ b/srcs/main3_mutex.c @@ -0,0 +1,48 @@ +#include "philo.h" + +pthread_mutex_t mutex; + +void *philo_exec(void *arg) +{ + t_philo *philo; + + pthread_mutex_lock(&mutex); + philo = (t_philo*)arg; + while (1) + { + write(1, philo->str, ft_strlen(philo->str)); + write(1, " nb ", 4); + ft_putnbr_fd(philo->nbr, 1); + write(1, "\n", 1); + sleep (1); + } + pthread_mutex_unlock(&mutex); +} + +int main(void) +{ + pthread_t *tid; + int n_philo; + int i; + t_philo *philo; + + n_philo = 3; + philo = malloc(sizeof(philo) * n_philo); + tid = malloc(sizeof(pthread_t) * n_philo); + i = 0; + pthread_mutex_init(&mutex, NULL); + while (i < n_philo) + { + philo[i].str = "i'm philosopher"; + philo[i].nbr = i; + pthread_create(&tid[i], NULL, &philo_exec, &philo[i]); + i++; + } + while (1) + { + write(1, "main function\n", 14); + sleep (1); + } + return 0; +} +