diff --git a/src/sched.c b/src/sched.c index cbf856b..a465f48 100644 --- a/src/sched.c +++ b/src/sched.c @@ -1,9 +1,28 @@ #include "../includes/sched.h" +#include +#include + int sched_init(int nthreads, int qlen, taskfunc f, void *closure) { - return -1; + sched_spawn(f, closure, NULL); + return 0; } int sched_spawn(taskfunc f, void *closure, struct scheduler *s) { - return -1; + pthread_t thread; + int errno; + + // Création d'un thread pour la tâche + if ((errno = pthread_create(&thread, NULL, (void *)f, closure)) != 0) { + fprintf(stderr, "pthread_create error %d\n", errno); + return -1; + } + + // Attend la fin du thread + if ((errno = pthread_join(thread, NULL)) != 0) { + fprintf(stderr, "error %d\n", errno); + return -1; + } + + return 0; }