pthread_attr_setscope(3)

NUME
pthread_attr_setscope, pthread_attr_getscope - stabilește/obține atributul domeniului de contenție în obiectul atributele firului de execuție

BIBLIOTECA
Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

REZUMAT
#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);

DESCRIERE
Funcția pthread_attr_attr_setscope() stabilește atributul domeniului de contenție al obiectului de atribute ale firelor la care face referire attr la valoarea specificată în scope. Atributul "contention scope" definește setul de fire de execuție împotriva cărora un fir de execuție concurează pentru resurse precum CPU. POSIX.1 specifică două valori posibile pentru scope:

PTHREAD_SCOPE_SYSTEM
    Firul concurează pentru resurse cu toate celelalte fire din toate procesele din sistem care se află în același domeniu de alocare a planificării (un grup de unul sau mai multe procesoare). Firele PTHREAD_SCOPE_SYSTEM sunt planificate unele în raport cu altele în funcție de politica de planificare și de prioritățile lor.

PTHREAD_SCOPE_PROCESS
    Firul concurează pentru resurse cu toate celelalte fire din același proces care au fost create, de asemenea, cu domeniul de contenție PTHREAD_SCOPE_PROCESS. Firele de execuție PTHREAD_SCOPE_PROCESS sunt planificate în raport cu celelalte fire de execuție din proces în funcție de politica de planificare și de prioritatea lor. POSIX.1 nu specifică modul în care aceste fire concurează cu alte fire din alte procese din sistem sau cu alte fire din același proces care au fost create cu domeniul de contenție PTHREAD_SCOPE_SYSTEM.

POSIX.1 impune ca o implementare să asigure suportul pentru cel puțin unul dintre aceste domenii de contenție. Linux acceptă PTHREAD_SCOPE_SYSTEM, dar nu și PTHREAD_SCOPE_PROCESS.

Pe sistemele care acceptă mai multe domenii de contenție, atunci, pentru ca stabilirea parametrilor efectuată de pthread_attr_attr_setscope() să aibă efect atunci când se apelează pthread_create(3), apelantul trebuie să utilizeze pthread_attr_setinheritsched(3) pentru a stabili atributul inherit-scheduler al obiectului de atribute attr la PTHREAD_EXPLICIT_SCHED.

Funcția pthread_attr_getscope() returnează atributul domeniului de contenție al obiectului atributelor firului de execuție la care se face referire prin attr în memoria tampon indicată de scope.

VALOAREA RETURNATĂ
În caz de succes, aceste funcții returnează 0; în caz de eroare, ele returnează un număr de eroare diferit de zero.

ERORI
pthread_attr_setscope() poate eșua cu următoarele erori:

EINVAL
    A fost specificată o valoare nevalidă în scop.

ENOTSUP
    scope a specificat valoarea PTHREAD_SCOPE_PROCESS, care nu este acceptată pe Linux.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
pthread_attr_setscope(), pthread_attr_getscope() | Siguranța firelor | MT-Safe

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001.

NOTE
Domeniul de contenție PTHREAD_SCOPE_SYSTEM indică de obicei faptul că un fir din spațiul utilizatorului este legat direct de o singură entitate de planificare a nucleului. Acesta este cazul pe Linux pentru implementarea învechită LinuxThreads și pentru implementarea modernă NPTL, care sunt ambele implementări 1:1 de fire de execuție.

POSIX.1 specifică faptul că domeniul implicit de contenție este definit de implementare.

CONSULTAȚI ȘI
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)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.