ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
EOK
EINVALattr.ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int pthread_cond_init(pthread_cond_t* cond, pthread_condattr_t* attr);ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
condattrpthread_cond_init()namespacestaticPTHREAD_COND_INITIALIZERΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
EOK
EAGAIN
EBUSYcond
EFAULTcondattr
EINVALcondΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ
int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex);ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
condmutexcondpthread_cond_signal()pthread_cond_broadcast()mutexmutexΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π·Π°Ρ Π²Π°Ρ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
EOK
EAGAIN
EFAULTcondmutex;
EINVALΒ β’Β Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ
condmutex;Β β’Β ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ
condΒ β’Β Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²Π»Π°Π΄Π΅Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ.
#include <time.h>
int pthread_cond_timedwait(pthread_cond_t* cond,
Β pthread_mutex_t* mutex, const struct timespec* abstime);ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ
abstimeΠ‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΡΠ½Π΅ΡΡΡ ΠΊ Π²ΡΠ·Π²Π°Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΡ. ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΏΡΡΠΊΡ Π·Π°Ρ Π²Π°ΡΠ° ΠΌΡΡΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ ΠΌΡΡΡΠ΅ΠΊΡ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Ρ Π²Π°ΡΠ΅Π½ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΌΡΡΡΠ΅ΠΊΡΠ΅.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
EOK
EAGAIN
EFAULTcondmutex
EINVALΒ β’Β Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ
condmutexΒ β’Β ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ
condΒ β’Β Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²Π»Π°Π΄Π΅Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ.
ETIMEDOUTabstime.ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ
Π¨ΡΠ°ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΉ ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ. Π native API ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ
SyncCondvarSignal()pthread_cond_signal()pthread_cond_broadcast()ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ: Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
pthread_cond_broadcast()ΠΠ΅ΡΡΠ°ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ Π½Π΅ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° UNIX. ΠΡΠ»ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π±Π΅Π· Π·Π°Ρ Π²Π°ΡΠ° ΠΌΡΡΡΠ΅ΠΊΡΠ°, Π° ΠΏΠΎΠΏΡΡΠΊΠ° Π·Π°Ρ Π²Π°ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
int pthread_cond_signal(pthread_cond_t* cond);Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
condΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
EOK
EFAULTcondmutex