ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΡ pthread_mutex_timedlock() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ Π΅Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ.
ΠΡΠΈΠ±ΠΊΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_timedlock () Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EINVALJ Β ΠΌΡΡΡΠ΅ΠΊΡ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠ° protocol, ΠΈ ΠΌ Π΅ΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PTHREAD_PRIO_PROTECT, Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΌ ΡΡΡΠ΅ΠΊΡΠ°;
[EINVAL] Β ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½, Π° ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡ abs_timeout Π² ΠΏΠΎΠ»Π΅ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ ΠΈ ΠΌ Π΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌ Π΅Π½ΡΡΠ΅ Π½ΡΠ»Ρ Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ 1000 ΠΌΠ»Π½;
[ETIMEDOUT] ΠΌΡΡΡΠ΅ΠΊΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_timedlock () ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EINVAL] Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡΠΎ ΠΌ mutex, Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°; XSI [EAGAIN] ΠΌΡΡΡΠ΅ΠΊΡ ΠΎΡΡΠ°Π»ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π΄Π»Ρ ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex
[ EDEADLK] ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΆΠ΅ Π²Π»Π°Π΄Π΅Π΅Ρ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ [EINTR].
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_timedlock() ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠΈΠΉ Threads ΠΈ Timeouts ΠΈ ΠΌ ΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ .
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
ΠΡΠ΄ΡΡΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
Π‘ΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅
pthread_mutex_destroy (), pthread_mutex_lock(), pthread_mutex_trylock(), time (), ΡΠΎ ΠΌ Base Definitions ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001, <pthread. h>, <time. h>.
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Π²ΡΠΏΡΡΠΊΠ΅ Issue 6, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ» ΡΡΠ°Π½Π΄Π°ΡΡ IEEEStd 1003.1d-1999.
pthread_mutexattr_destroy
ΠΠΌΡ
pthread_mutexattr_destroy
Π‘ΠΈΠ½ΠΎΠΏΡΠΈΡ
THR #include <pthread.h>
int pthread_mutexattr_destroy (
pthread_mutexattr_t *attr); int pthread_mutexattr_init (pthread_mutexattr_t *attr);
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutexattr_destroy () ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌ ΡΡΡΠ΅ΠΊΡΠ°, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. Π ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΡ pthread_mutexattr_destroy() ΠΌ ΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ ΠΌ ΡΠΉ ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡΠΎ ΠΌ attr, ΡΠ°Π²Π½Ρ ΠΌ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌ Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π°Π·ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌ ΠΎΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎ ΠΌ ΠΎ Ρ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutexattr_init (); ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ pthread_mutexattr_init () Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΡΠ»Π°ΡΡΡ Π½Π° ΡΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² attr.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡΡΡΠ΅ΠΊΡΠ° Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Π» Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ), Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΡΡΠ°Π·ΠΈΡΡΡ Π½Π° ΡΠ°Π½Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°Ρ .
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutexattr_destroy() ΠΈ pthread_mutexattr_init () Π²ΠΎΠ·Π²ΡΠ° Ρ Π°ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎ ΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Ρ Ρ ΠΈΠΉ Π΅Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ.
ΠΡΠΈΠ±ΠΊΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutexattr_destroy () ΠΌ ΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EINVAL ] Β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ attr, Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutexattr_init () Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[ENOMEM] Β Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌ ΡΡΡΠ΅ΠΊΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ° Ρ Π°ΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ [EINTR].
pthread_mutexattr_destroy, pthread_mutexattr_init β ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌ ΡΡΡΠ΅ΠΊΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΠΉ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠΌ. ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_attr_init (). ΠΠ±ΡΠ΅ΠΊΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001 ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΡΠΎΠ±Π»Π°Π·Π½ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅ΡΠ΅ ΡΠΈΡΠΎΠΊΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΏΠΎΠ½ΡΡΠ°.
Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ°ΠΊ spin__only, limited spin, no__spin, recursive ΠΈ metered. (Π‘ΡΠΈΡΠ°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΠ°Π·ΡΡΡΠ½ΠΈΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠ°ΠΊ recursive nmetered: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°; ΠΌΡΡΡΠ΅ΠΊΡΡ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΠΊΡΠΈΡΡΡΡ Π΄Π»ΠΈΠ½Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ Ρ.Π΄.) ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΠ΅ Π½Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠΎΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΎΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001 ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΈ ΠΈΠ΄Π΅ΠΈ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΡΡΠΈΠ±ΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡΡΡΠ΅ΠΊΡΠ° Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΡΡΡΠ΅ΠΊΡΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΈΠΌΠ΅Π»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΠΌΡΡΡΠ΅ΠΊΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ. ΠΠ΄ΠΈΠ½ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ. ΠΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΡΡΡΠ΅ΠΊΡ Π·Π°ΡΡΠ°Π²ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΠΏΡΡΡΒ», ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡΡΡΠ΅ΠΊΡ Π±ΡΠ» Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½; Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ³Π»Π° Π±Ρ Β«ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡΒ» Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Β«Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉΒ» ΠΌΡΡΡΠ΅ΠΊΡ. ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΆΠ΅Π»Π°Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ ΠΌΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½. ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ) ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡΡΡΠ΅ΠΊΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
Π‘ΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΠΎΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001 Π΄Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· ΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ (Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²).
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ (Ρ.Π΅. ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ) ΡΠ»ΡΡΠ°Ρ, Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ process-shared.
ΠΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ Π΄ Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΡΠΈΡ _POSIX_THREAD_PROCESS_SHARED, ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ process-shared ΠΌ ΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊ ΠΌΡΡΡΠ΅ΠΊΡΠ°ΠΌ ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ Ρ ΠΌ ΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ Π² ΡΠ° ΠΌ ΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠΎΡ ΠΌ Π΅, Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠ° process-shared Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PTHREAD_PROCESS_PRIVATE. ΠΠ΅ΡΠ΅ ΠΌ Π΅Π½Π½ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌ PTHREAD_PROCESS_PRIVATE Π°ΡΡΠΈΠ±ΡΡΠ° process-shared, ΠΌ ΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΌ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎ ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎ ΠΌ Π±ΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ ΠΌ Π΅Π½Π½ΡΡ . ΠΠ΅ΡΠ΅ ΠΌ Π΅Π½Π½ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌ PTHREAD_PROCESS_SHARED Π°ΡΡΠΈΠ±ΡΡΠ° process-shared, ΠΌ ΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π»ΡΠ±ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡΡΠΏ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΌΠ°ΡΠΎΡ-ΡΡΠ΅ΡΡΠΈΠΊ Π² ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.