This repository has been archived on 2024-05-05. You can view files and clone it, but cannot push or open issues or pull requests.
work-stealing-scheduler/includes/sched.h

37 lines
998 B
C
Raw Normal View History

#pragma once
2024-04-18 17:41:41 +02:00
#include <pthread.h>
#include <unistd.h>
struct scheduler;
typedef void (*taskfunc)(void *, struct scheduler *);
2024-04-20 21:15:31 +02:00
/* Renvoie le nombre de coeurs disponible. */
2024-04-19 15:33:03 +02:00
static inline int
sched_default_threads(void)
{
return sysconf(_SC_NPROCESSORS_ONLN);
}
/* Lance l'ordonnanceur
2024-04-18 17:41:12 +02:00
* - nthreads : nombre de threads créer par l'ordonnanceur.
* Si 0, le nombre de threads sera égal au nombre de coeurs de votre machine
*
* - qlen : nombre minimum de tâches simultanées que lordonnanceur devra
2024-04-18 17:41:12 +02:00
* supporter.
* Retourne une erreur si l'utilisateur dépasse qlen
*
* - f, closure : tâche initiale
*
* Renvoie 1 quand elle a terminé, -1 en cas d'échec d'initialisation
*/
int sched_init(int nthreads, int qlen, taskfunc f, void *closure);
2024-03-09 18:47:40 +01:00
/* Enfile une nouvelle tâche (f, closure) à l'ordonanceur (s)
*
* Peut renvoyer -1 avec errno = EAGAIN quand on dépasse la capacité de
2024-04-18 17:41:12 +02:00
* l'ordonanceur
2024-04-20 21:15:31 +02:00
*/
int sched_spawn(taskfunc f, void *closure, struct scheduler *s);