.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_setaffinity_np 3 "3 noiembrie 2024" "Pagini de manual de Linux 6.12" .SH NUME pthread_setaffinity_np, pthread_getaffinity_np \- stabilește/obține afinitatea CPU a unui fir .SH BIBLIOTECA Biblioteca de fire de execuție POSIX (\fIlibpthread\fP, \fI\-lpthread\fP) .SH SINOPSIS .nf \fB#define _GNU_SOURCE\fP /* Consultați feature_test_macros(7) */ \fB#include \fP .P \fBint pthread_setaffinity_np(pthread_t \fP\fIthread\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP \fB const cpu_set_t *\fP\fIcpuset\fP\fB);\fP \fBint pthread_getaffinity_np(pthread_t \fP\fIthread\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP \fB cpu_set_t *\fP\fIcpuset\fP\fB);\fP .fi .SH DESCRIERE Funcția \fBpthread_setaffinity_np\fP() stabilește masca de afinitate CPU a firului \fIthread\fP la setul de CPU indicat de \fIcpuset\fP. Dacă apelul are succes, iar firul nu rulează în prezent pe unul dintre CPU\-urile din \fIcpuset\fP, atunci acesta este migrat către unul dintre acele CPU\-uri. .P Funcția \fBpthread_getaffinity_np\fP() returnează masca de afinitate CPU a firului \fIthread\fP în memoria tampon indicată de \fIcpuset\fP. .P Pentru mai multe detalii despre măștile de afinitate CPU, consultați \fBsched_setaffinity\fP(2). Pentru o descriere a unui set de macrocomenzi care pot fi utilizate pentru a manipula și inspecta seturile de CPU, consultați \fBCPU_SET\fP(3). .P Argumentul \fIcpusetsize\fP este lungimea (în octeți) a memoriei tampon indicate de \fIcpuset\fP. De obicei, acest argument ar fi specificat ca \fIsizeof(cpu_set_t)\fP; (poate fi o altă valoare, dacă se utilizează macrocomenzile descrise în \fBCPU_SET\fP(3) pentru alocarea dinamică a unui set CPU). .SH "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. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP Adresa de memorie furnizată nu a fost validă. .TP \fBEINVAL\fP (\fBpthread_setaffinity_np\fP()) Masca de biți de afinitate \fImask\fP nu conține niciun procesor care se află în prezent fizic pe sistem și care este permis firului de execuție în conformitate cu orice restricții care pot fi impuse de mecanismul „\fIcpuset\fP” descris în \fBcpuset\fP(7). .TP \fBEINVAL\fP .\" cpumask_t .\" The raw sched_getaffinity() system call returns the size (in bytes) .\" of the cpumask_t type. (\fBpthread_setaffinity_np\fP()) \fIcpuset\fP a specificat un CPU care se afla în afara setului acceptat de nucleu; (opțiunea de configurare a nucleului \fBCONFIG_NR_CPUS\fP definește intervalul setului acceptat de tipul de date al nucleului utilizat pentru a reprezenta seturile de CPU). .TP \fBEINVAL\fP (\fBpthread_getaffinity_np\fP()) \fIcpusetsize\fP este mai mică decât dimensiunea măștii de afinitate utilizată de nucleu. .TP \fBESRCH\fP Nu a putut fi găsit niciun fir de execuție cu identificatorul \fIthread\fP. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBpthread_setaffinity_np\fP(), \fBpthread_getaffinity_np\fP() T} Siguranța firelor MT\-Safe .TE .SH STANDARDE GNU; de aici și sufixul „_np” (neportabil) din denumiri. .SH ISTORIC glibc 2.3.4. .P Numai în glibc 2.3.3, au fost furnizate versiuni ale acestor funcții care nu aveau un argument \fIcpusetsize\fP. În schimb, dimensiunea setului de procesoare transmisă apelurilor de sistem subiacente era întotdeauna \fIsizeof(cpu_set_t)\fP. .SH NOTE După un apel la \fBpthread_setaffinity_np\fP(), setul de CPU\-uri pe care se va executa efectiv firul este intersecția dintre setul specificat în argumentul \fIcpuset\fP și setul de CPU\-uri prezente efectiv în sistem. Sistemul poate restricționa și mai mult setul de CPU\-uri pe care rulează firul de execuție dacă se utilizează mecanismul „cpuset” descris în \fBcpuset\fP(7). Aceste restricții privind setul real de CPU\-uri pe care va rula firul sunt impuse în mod silențios de către nucleu. .P Aceste funcții sunt implementate pe baza apelurilor de sistem \fBsched_setaffinity\fP(2) și \fBsched_getaffinity\fP(2). .P Un nou fir creat de \fBpthread_create\fP(3) moștenește o copie a măștii de afinitate CPU a creatorului său. .SH EXEMPLE În următorul program, firul principal utilizează \fBpthread_setaffinity_np\fP() pentru a\-și defini masca de afinitate CPU pentru a include CPU de la 0 la 7 (care pot să nu fie toate disponibile în sistem) și apoi apelează \fBpthread_getaffinity_np\fP() pentru a verifica masca de afinitate CPU rezultată a firului. .P .\" SRC BEGIN (pthread_setaffinity_np.c) .EX #define _GNU_SOURCE #include #include #include #include #include \& int main(void) { int s; cpu_set_t cpuset; pthread_t thread; \& thread = pthread_self(); \& /* Definește masca de afinitate pentru a include CPU de la 0 la 7. */ \& CPU_ZERO(&cpuset); for (size_t j = 0; j < 8; j++) CPU_SET(j, &cpuset); \& s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_setaffinity_np"); \& /* Verifică masca de afinitate actuală atribuită firului. */ \& s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_getaffinity_np"); \& printf("Setul returnat de pthread_getaffinity_np() conține:\[rs]n"); for (size_t j = 0; j < CPU_SETSIZE; j++) if (CPU_ISSET(j, &cpuset)) printf(" CPU %zu\[rs]n", j); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBsched_setaffinity\fP(2), \fBCPU_SET\fP(3), \fBpthread_attr_setaffinity_np\fP(3), \fBpthread_self\fP(3), \fBsched_getcpu\fP(3), \fBcpuset\fP(7), \fBpthreads\fP(7), \fBsched\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .