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

35 lines
977 B
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <unistd.h>
struct scheduler;
typedef void (*taskfunc)(void *, struct scheduler *);
/* Renvoie le nombre de coeurs disponible. */
static inline int
sched_default_threads(void)
{
return sysconf(_SC_NPROCESSORS_ONLN);
}
/* Lance l'ordonnanceur
* - 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
* 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);
/* Enfile une nouvelle tâche (f, closure) à l'ordonanceur (s)
*
* Peut renvoyer -1 avec errno = EAGAIN quand on dépasse la capacité de
* l'ordonanceur
*/
int sched_spawn(taskfunc f, void *closure, struct scheduler *s);