Ucontext sous Linux

J’ai lu que ucontext est utilisé pour enregistrer le contexte entre plusieurs threads sous Linux. Puisque le système d’exploitation change de contexte entre différents threads, pourquoi Linux fournit-il ce fichier d’en-tête (ucontext.h) pour la commutation de contexte?

ucontext.h définit des fonctions ( setcontext , getcontext , makecontext et swapcontext ) et des structures ( ucontext_t et mcontext_t ) permettant au programmeur d’enregistrer et de restaurer le contexte du programme.

À l’aide de ces fonctions, un programmeur peut implémenter des schémas de contrôle de stream avancés, tels que des routines ou des threads utilisateur légers.

Une bonne quantité de détails (y compris un exemple d’implémentation de coroutines) sont donnés dans la bibliothèque GNU C: Contrôle complet du contexte .

Il convient de noter que ucontext.h était obsolète dans POSIX.1-2008 (“Norme IEEE 1003.1-2001 / Cor 2-2004, élément XBD / TC2 / D6 / 28 est appliqué, mise à jour de getcontext (), makecontext (), setcontext fonctions obsolètes () et swapcontext () “sur la page ucontext.h ).)