.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2017, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_spin_init 3 "30 martie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME pthread_spin_init, pthread_spin_destroy \- inițializează sau distruge un blocaj de rotație .SH BIBLIOTECA Biblioteca de fire de execuție POSIX (\fIlibpthread\fP, \fI\-lpthread\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBint pthread_spin_init(pthread_spinlock_t *\fP\fIlock\fP\fB, int \fP\fIpshared\fP\fB);\fP \fBint pthread_spin_destroy(pthread_spinlock_t *\fP\fIlock\fP\fB);\fP .fi .PP .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .PP \fBpthread_spin_init\fP(), \fBpthread_spin_destroy\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH DESCRIERE \fINota generală\fP: Majoritatea programelor ar trebui să utilizeze mutex\-uri în loc de blocaje de rotație. Blocajele rotative sunt utile în primul rând în combinație cu politicile de planificare în timp real. A se vedea NOTE. .PP Funcția \fBpthread_spin_init\fP() alocă toate resursele necesare pentru utilizarea blocării prin rotație la care face referire \fIlock\fP și inițializează blocarea pentru a fi în stare deblocată. Argumentul \fIpshared\fP trebuie să aibă una dintre următoarele valori: .TP \fBPTHREAD_PROCESS_PRIVATE\fP Blocajul de rotație trebuie să fie operat numai de fire din același proces ca și firul care apelează \fBpthread_spin_init\fP(); (încercarea de a împărți blocajul de rotație între procese duce la un comportament nedefinit). .TP \fBPTHREAD_PROCESS_SHARED\fP Blocajul de rotație poate fi operat de orice fir din orice proces care are acces la memoria care conține blocajul (de exemplu, blocajul poate fi într\-un obiect de memorie partajată care este partajat între mai multe procese). .PP Apelarea \fBpthread_spin_init\fP() pe un blocaj de rotație care a fost deja inițializat are ca rezultat un comportament nedefinit. .PP Funcția \fBpthread_spin_destroy\fP() distruge un blocaj de rotație inițializat anterior, eliberând toate resursele care au fost alocate pentru acel blocaj. Distrugerea unui blocaj de rotație care nu a fost inițializat anterior sau distrugerea unui blocaj de rotație în timp ce un alt fir de execuție deține blocajul are ca rezultat un comportament nedefinit. .PP Odată ce un blocaj de rotație a fost distrus, efectuarea oricărei operații asupra blocajului în afară de inițializarea acestuia cu \fBpthread_spin_init\fP() duce la un comportament nedefinit. .PP Rezultatul efectuării unor operații precum \fBpthread_spin_lock\fP(3), \fBpthread_spin_unlock\fP(3) și \fBpthread_spin_destroy\fP() pe \fIcopii\fP ale obiectului la care se face referire prin \fIlock\fP este nedefinit. .SH "VALOAREA RETURNATĂ" În caz de succes, aceste funcții returnează zero. În caz de eșec, acestea returnează un număr de eroare. În cazul în care \fBpthread_spin_init\fP() eșuează, blocajul nu este inițializat. .SH ERORI\-IEȘIRE .\" These errors don't occur on the glibc implementation \fBpthread_spin_init\fP() poate eșua cu următoarele erori: .TP \fBEAGAIN\fP Sistemul nu dispune de resurse suficiente pentru a inițializa un nou blocaj de rotație. .TP \fBENOMEM\fP Memorie insuficientă pentru a inițializa blocajul de rotire. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC glibc 2.2. POSIX.1\-2001. .PP Suportul pentru blocajele de rotație partajate de proces este o opțiune POSIX. Opțiunea este acceptată în implementarea glibc. .SH NOTE Blocajele de rotație trebuie utilizate împreună cu politicile de planificare în timp real (\fBSCHED_FIFO\fP sau, eventual, \fBSCHED_RR\fP). Utilizarea de blocaje de rotire cu politici de planificare nedeterministe, cum ar fi \fBSCHED_OTHER\fP, indică probabil o greșeală de proiectare. Problema constă în faptul că, dacă un fir care funcționează în conformitate cu o astfel de politică este programat în afara CPU în timp ce deține un blocaj de rotire, atunci alte fire vor pierde timp cu rotirea pe blocaj până când deținătorul blocajului este reprogramat din nou și eliberează blocajul. .PP Dacă firele de execuție creează o situație de blocaj în timp ce utilizează blocaje de rotire, aceste fire de execuție se vor roti la nesfârșit, consumând timp de procesor. .PP .\" FIXME . When PTHREAD_MUTEX_ADAPTIVE_NP is one day document .\" make reference to it here Blocajele de rotație din spațiul utilizatorului \fInu\fP sunt aplicabile ca soluție generală de blocare. Acestea sunt, prin definiție, predispuse la inversarea priorităților și la timpi de rotație nelimitați. Un programator care utilizează blocaje de rotație trebuie să fie extrem de atent nu numai la cod, ci și în ceea ce privește configurația sistemului, plasarea firelor și atribuirea priorităților. .SH "CONSULTAȚI ȘI" .ad l .nh \fBpthread_mutex_init\fP(3), \fBpthread_mutex_lock\fP(3), \fBpthread_spin_lock\fP(3), \fBpthread_spin_unlock\fP(3), \fBpthreads\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 .