Π€ΡΠ½ΠΊΡΠΈΡ pthread_join() ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_join () ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π»ΡΠ±Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ ΡΡΠ΅ΠΊ.
Π€ΡΠ½ΠΊΡΠΈΠΈ pthread_join () ΠΈΠ»ΠΈ pthread_detach () Π΄ΠΎΠ»ΠΆΠ½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ detachstate, ΡΠ°Π²Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ PTHREAD_CREATE_JOINABLE , ΡΡΠΎΠ±Ρ ΠΌ ΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ pthread_join () ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΡΠΌΠ΅Π½Ρ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:
β’Β ΡΡΠ½ΠΊΡΠΈΡ pthread_join (), ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΎΡΠΌΠ΅Π½Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΡΠΌΠ΅Π½Ρ.
β’Β ΠΎΡΠΌΠ΅Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΌΠ΅Π½Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠΌΠ΅Π½Ρ. ΠΡΠ°ΠΊ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ pthread_join() Π»ΠΈΠ±ΠΎ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π»ΠΈΠ±ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΎΡΠΌΠ΅Π½Ρ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ pthread_join (). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Β«Π³ΠΎΠ½ΠΎΠΊΒ» Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ pthread_join() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΎΡΠΌΠ΅Π½Ρ.
ΠΡΠ΄ΡΡΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
Π‘ΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅
pthread_create(), wait(), ΡΠΎΠΌ Base Definitions ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001, <pthread.h>.
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΡΠΏΡΡΠΊΠ΅ Issue 5. ΠΠΊΠ»ΡΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌ POSIX Threads Extension.
Issue 6
Π€ΡΠ½ΠΊΡΠΈΡ pthread_join () ΠΎΡΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΎΠΏΡΠΈΠΈ Threads.
pthread_mutex_destroy, pthread_mutex_init
ΠΠΌΡ
pthread_mutex_destroy, pthread_mutex_init β ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π·ΡΡΡΠ΅ Π½ ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠ°.
Π‘ΠΈΠ½ΠΎΠΏΡΠΈΡ
THR
#include <pthread.h>
int pthread_mutex_destroy (pthread_mutex_t *^utex);
int pthread_mutex_init (
pthread_mutex_t *restrict jnutex,
const pthread_mutexattr_t *restrict attr);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_destroy () ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. Π ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΡ pthread_mutex_destroy () ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex, ΡΠ°Π²Π½ΡΠΌ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π°Π·ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutex_init(); ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ.
ΠΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΡΡΡΠ΅ΠΊΡΠ°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΠΎΠΏΡΡΠΊΠ° ΠΆΠ΅ ΡΠ°Π·ΡΡΡΠΈΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΌ Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_init () ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌ ΡΡΡΠ΅ΠΊΡΠ°, Π°Π΄ΡΠ΅ΡΡΠ΅ ΠΌ ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡΠΎ ΠΌ mutex, ΠΎΠ±ΡΠ΅ΠΊΡΠΎ ΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ attr. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ attr ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Ρ.Π΅. ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π²Π½ΠΎΡΠΈΠ»Π΅Π½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°. ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΡΡΡΠ΅ΠΊΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ.
ΠΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° mutex Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ pthread_mutex_lock(), pthread_mutex_trylock(), pthread_mutex_unlock() ΠΈ pthread_mutex_destroy () Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.
ΠΠΎΠΏΡΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ PTHREAD_MUTEX_INITIALIZER. Π Π΅Π·Ρ Π» ΡΡΠ°Ρ Π² ΡΡΠΎΠΌ Ρ Π» ΡΡΠ°Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutex_init () Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ attr, ΡΠ°Π²Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL, Π½ΠΎ Π±Π΅Π· Π²ΡΠΏΠΎ Π» Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutex_destroy() ΠΈ pthread_ mutex_init () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ Π΅Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ [EBUSY] ΠΈ [EINVAL] ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°ΠΊ (Π΅ΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠΎΠ±ΡΠ΅), ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π΅Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex.
ΠΡΠΈΠ±ΠΊΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_destroy () ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EBUSY] Β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»Π° ΠΏΠΎΠΏΡΡΠΊΡ ΡΠ°Π·ΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ ΠΌ ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ (Π½Π°ΠΏΡΠΈ ΠΌ Π΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡΡ pthread_mutex_wait () ΠΈΠ»ΠΈ pthread_mutex_timedwait ()), ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½;
[EINVAL] Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡΠΎ ΠΌ mutex, Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_init () Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EAGAIN] ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΠΏΡΡΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ΅ΡΡΡΡΠΎΠ² (Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ ΠΏΠ°ΠΌΡΡΡ), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΡΡΡΠ΅ΠΊΡΠ°;
[ENOMEM] Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ;
[EPERM] Β ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΎΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ pthread_mutex_init () ΠΌ ΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
[EBUSY] Β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»Π° ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ mutex, ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ» ΡΠ°Π½Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ ΡΠ°Π·ΡΡΡΠ΅Π½;
[EINVAL ] Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ° ΠΌ Π΅ΡΡΠΎ ΠΌ attr, Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ° Ρ Π°ΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ [EINTR].
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡΡΡΡΡΠ²ΡΡΡ.
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ
ΠΠ°Π½Π½ΡΠΉ ΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ². Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΡΠΈΠΏΠ° pthread_mutex_t. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Β«ΠΊΡΡΠ΅Β», Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΈΠ»ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ID β Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΎΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° IEEE Std 1003.1-2001 ΠΆΠ΅ΡΡΠΊΠΎ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΒ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΠ°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈ ΠΌ Π°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΌ ΡΡΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ ΠΌ Π΅Π½Π½ΠΎΠΉ.
Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_mutex_destroy() Π² ΠΌΡΡΡΠ΅ΠΊΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΎΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²ΡΡΠ²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°ΡΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ ΡΠ°Π·ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΌΡΡΡΠ΅ΠΊΡ (ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠΎΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ).
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ Π·Π° ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ°Π΄ΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ»Π½ΠΎΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ΄Π°ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΡΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ , Π²ΡΠ·Π²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΡΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ Π·Π°ΡΠΈΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΠΎΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ).