From 02b377a582764eedeb9962ff67b2055149d0b7b0 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Wed, 29 Dec 2021 10:57:04 +0100 Subject: [PATCH] tests avec join et mutex --- srcs/main1_join.c | 25 +++++++++++++++++++++ srcs/main2_multithread.c | 43 +++++++++++++++++++++++++++++++++++ srcs/main3_mutex.c | 48 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 srcs/main1_join.c create mode 100644 srcs/main2_multithread.c create mode 100644 srcs/main3_mutex.c 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; +} +