pthread_attr_setscope, pthread_attr_getscope - Définir ou obtenir la
contention 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 scope);
int pthread_attr_getscope(const pthread_attr_t *restrict attr,
int *restrict scope);
The
pthread_attr_setscope() function sets the contention scope attribute
of the thread attributes object referred to by
attr to the value
specified in
scope. The contention scope attribute defines the set of
threads against which a thread competes for resources such as the CPU. POSIX.1
specifies two possible values for
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
- The thread competes for resources with all other threads in
the same process that were also created with the
PTHREAD_SCOPE_PROCESS contention scope.
PTHREAD_SCOPE_PROCESS threads are scheduled relative to other
threads in the process according to their scheduling policy and priority.
POSIX.1 leaves it unspecified how these threads contend with other threads
in other process on the system or with other threads in the same process
that were created with the PTHREAD_SCOPE_SYSTEM contention
scope.
POSIX.1 requires that an implementation support at least one of these contention
scopes. Linux supports
PTHREAD_SCOPE_SYSTEM, but not
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.
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 :
- 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.
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-2001, POSIX.1-2008.
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 specifies that the default contention scope is implementation-defined.
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
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Frédéric Hantrais <
[email protected]>
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 à
[email protected]