pthread_attr_setscope(3) Library Functions Manual pthread_attr_setscope(3)

pthread_attr_setscope, pthread_attr_getscope — Définir ou obtenir l'attribut portée de compétition d'un objet d'attributs de thread

Bibliothèque de threads POSIX (libpthread, -lpthread)

#include <pthread.h>
int pthread_attr_setscope(pthread_attr_t *attr, int portée);
int pthread_attr_getscope(const pthread_attr_t *restrict attr,
                          int *restrict portée);

La fonction pthread_attr_setscope() définit l'attribut de portée (« scope ») de compétition de l'objet d'attributs de thread auquel attr fait référence à la valeur indiquée par portée. Cet attribut détermine l'ensemble des threads avec lesquels un thread est en compétition pour les ressources, telles que le CPU. POSIX.1 spécifie deux valeurs possibles pour portée :

Le thread est en compétition pour les ressources avec tous les threads de tous les processus du système qui sont dans le même domaine d'ordonnancement (un groupe composé d'un ou de plusieurs processeurs). Les threads PTHREAD_SCOPE_SYSTEM sont ordonnancés entre eux en fonction de leur priorité et de la politique d'ordonnancement.
Le thread est en compétition pour les ressources avec tous les threads du même processus du système qui ont aussi été créés avec PTHREAD_SCOPE_PROCESS. Les threads PTHREAD_SCOPE_PROCESS sont ordonnancés entre eux à l'intérieur du processus en fonction de leur priorité et de la politique d'ordonnancement. POSIX.1 ne spécifie pas comment régler la compétition entre ces threads et les threads d'autres processus du système, ni avec les threads du même processus qui ont été créés avec PTHREAD_SCOPE_SYSTEM.

POSIX.1 impose qu'une implémentation doit accepter au moins l'une de ces portées de compétition. Linux accepte PTHREAD_SCOPE_SYSTEM, mais pas PTHREAD_SCOPE_PROCESS.

Sur les systèmes qui acceptent plusieurs portées de compétition, pour que la politique définie par pthread_attr_setscope() puisse être prise en compte lors de l'appel de pthread_create(3), l'appelant doit définir l'attribut d'ordonnancement hérité de l'objet d'attributs attr au moyen de pthread_attr_setinheritsched(3), en lui assignant la valeur PTHREAD_EXPLICIT_SCHED.

La fonction pthread_attr_getscope() renvoie, dans le tampon pointé par portée, l'attribut de portée de compétition de l'objet d'attributs de thread attr.

En cas de succès, ces fonctions renvoient 0 ; en cas d'erreur, elles renvoient un code d'erreur non nul.

pthread_attr_setscope() peut échouer avec les erreurs suivantes :

Une valeur non valable a été spécifiée dans portée.
La valeur PTHREAD_SCOPE_PROCESS est spécifiée dans portée, or elle n'est pas prise en charge sous Linux.

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

Interface Attribut Valeur
pthread_attr_setscope(), pthread_attr_getscope() Sécurité des threads MT-Safe

POSIX.1-2008.

POSIX.1-2001.

La porté de compétition PTHREAD_SCOPE_SYSTEM indique typiquement qu'un thread dans l'espace utilisateur est rattaché directement à une entité unique d'ordonnancement du noyau. C'est le cas sous Linux avec l'implémentation obsolète LinuxThreads, mais aussi avec l'implémentation moderne NPTL, qui sont toutes les deux des implémentations de threads 1:1.

POSIX.1 spécifie que la portée de compétition par défaut est définie par l'implémentation.

pthread_attr_init(3), pthread_attr_setaffinity_np(3), pthread_attr_setinheritsched(3), pthread_attr_setschedparam(3), pthread_attr_setschedpolicy(3), pthread_create(3), pthreads(7)

La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Frédéric Hantrais <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

20 juillet 2023 Pages du manuel de Linux 6.05.01