tests avec join et mutex

This commit is contained in:
hugogogo
2021-12-29 10:57:04 +01:00
parent a2eccc8deb
commit a3821d5b15
4 changed files with 122 additions and 25 deletions

View File

@@ -6,37 +6,18 @@ void *philo_exec(void *arg)
philo = (t_philo*)arg; philo = (t_philo*)arg;
while (1) while (1)
{
write(1, philo->str, ft_strlen(philo->str)); 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) int main(void)
{ {
pthread_t *tid; pthread_t id;
int ret;
int n_philo;
int i;
t_philo *philo; t_philo *philo;
n_philo = 3; philo = malloc(sizeof(philo));
philo = malloc(sizeof(philo) * n_philo); philo->str = "i'm philosopher\n";
tid = malloc(sizeof(pthread_t) * n_philo); pthread_create(&id, NULL, &philo_exec, philo);
i = 0; while (1)
while (i < n_philo) write(1, "main function\n", 14);
{
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);
}
return 0; return 0;
} }

25
srcs/main1_join.c Normal file
View File

@@ -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;
}

43
srcs/main2_multithread.c Normal file
View File

@@ -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;
}

48
srcs/main3_mutex.c Normal file
View File

@@ -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;
}