PTHREAD_ATTR_SETSCOPE(3)

NOM
pthread_attr_setscope, pthread_attr_getscope - Définir ou obtenir la contention d'un objet d'attributs de thread

SYNOPSIS
#include <pthread.h>
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);

Compilez et effectuez l'édition des liens avec l'option -pthread.

DESCRIPTION
La fonction pthread_attr_setscope() définit l'attribut de contention de l'objet d'attributs de thread auquel attr fait référence à la valeur indiquée par scope. 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-2001 spécifie deux valeurs possibles pour scope :

PTHREAD_SCOPE_SYSTEM
    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'allocation (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.

PTHREAD_SCOPE_PROCESS
    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-2001 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-2001 impose qu'une implémentation doit accepter au moins l'une de ces résolutions de compétition. Linux accepte PTHREAD_SCOPE_SYSTEM, mais pas PTHREAD_SCOPE_PROCESS. Sur les systèmes qui acceptent plusieurs arbitrages 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 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 scope, l'attribut contenant le mode de résolution de compétition de l'objet d'attributs de thread attr.

VALEUR RENVOYÉE
En cas de réussite, ces fonctions renvoient 0 ; en cas d'erreur elles renvoient un numéro d'erreur non nul.

ERREURS
pthread_attr_setscope() peut échouer avec les erreurs suivantes :

EINVAL
    Une valeur invalide a été spécifiée dans scope.

ENOTSUP
    La valeur PTHREAD_SCOPE_PROCESS est spécifiée dans scope, or elle n'est pas supportée sous Linux.

ATTRIBUTS

  Multithreading (voir pthreads(7))
Les fonctions pthread_attr_setscope() et pthread_attr_getscope() sont sûres dans un contexte multithread.

CONFORMITÉ
POSIX.1-2001.

NOTES
La valeur 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-2001 spécifie que chaque implémentation est libre de définir la valeur par défaut.

VOIR AUSSI
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)

COLOPHON
Cette page fait partie de la publication 3.70 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Denis Barbier (2010).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».