Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 169

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ функция 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, ΠΌ ΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π² любом процСссС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊ Π½ΠΈΠΌ доступ. Π’ частности, эти процСссы ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСзависимо ΠΎΡ‚ процСсса ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ простой сСмафор-счСтчик Π² общСдоступном Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ процСссами.