pthread_spin_lock(3)

NUME
 pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock - blochează și deblochează blocajul de rotație

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

REZUMAT
#include <pthread.h>

int pthread_spin_lock(pthread_spinlock_t *lock);
int pthread_spin_trylock(pthread_spinlock_t *lock);
int pthread_spin_unlock(pthread_spinlock_t *lock);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

pthread_spin_lock(), pthread_spin_trylock():
    _POSIX_C_SOURCE >= 200112L

DESCRIERE
Funcția pthread_spin_lock() blochează blocajul de rotație la care face referire lock. În cazul în care blocajul de rotație este în prezent deblocat, firul apelant dobândește imediat blocajul. În cazul în care blocajul este blocat în prezent de un alt fir, firul apelant se rotește, testând blocajul până când acesta devine disponibil, moment în care firul apelant preia blocajul.

Apelarea pthread_spin_lock() pe un blocaj care este deja deținut de apelant sau pe un blocaj care nu a fost inițializat cu pthread_spin_init(3) are ca rezultat un comportament nedefinit.

Funcția pthread_spin_trylock() este la fel ca pthread_spin_lock(), cu excepția faptului că, dacă blocajul de rotație la care se face referire prin lock este blocat în prezent, atunci, în loc să se rotească, apelul se întoarce imediat cu eroarea EBUSY.

Funcția pthread_spin_unlock() deblochează blocajul de rotație referit la lock. În cazul în care există fire de execuție care se rotesc pe blocaj, unul dintre aceste fire va dobândi blocajul.

Apelarea pthread_spin_unlock() pe un blocaj care nu este deținut de către apelant are ca rezultat un comportament nedefinit.

VALOAREA RETURNATĂ
În caz de succes, aceste funcții returnează zero. În caz de eșec, acestea returnează un număr de eroare.

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

EDEADLOCK
    Sistemul a detectat o condiție de blocaj

pthread_spin_trylock() eșuează cu următoarele erori:

EBUSY
    Blocajul de rotație este blocat în prezent de un alt fir.

STANDARDE
POSIX.1-2008.

ISTORIC
glibc 2.2. POSIX.1-2001.

LIMITĂRI
Aplicarea oricăreia dintre funcțiile descrise în această pagină la un blocaj de rotație neinițializat are ca rezultat un comportament nedefinit.

Citiți cu atenție NOTELE din pthread_spin_init(3).

CONSULTAȚI ȘI
pthread_spin_destroy(3), pthread_spin_init(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.