EAGAIN
EINVALSEM_VALUE_MAX
EPERM
ENOSPC
ENOSYSsem_init()ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
sem_destroy()
EINVAL
sem_open()sem_close()sem_unlink()unlink()sem_open()ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
ΠΠ»Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ:
int sem_wait(sem_t* sem);
int sem_trywait(sem_t* sem);
#include <time.h>
int sem_timedwait(sem_t* sem, const struct timespec * abs_timeout);ΠΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ (native QNX API):
int SyncSemWait(sync_t* sync, int try);Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
sem_wait()Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°,
sem_trywait()Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Ρ ΡΠ°ΠΉΠΌ-Π°ΡΡΠΎΠΌ,
sem_timedwait()abs_timeoutTimerTimeout()SIGEV_UNBLOCKΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
int sem_post(sem_t* sem);ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ (ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ) Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, ΠΈ Π² ΡΡΠΎΠΌ ΠΎΠ½Π° Π΄ΠΈΠ°ΠΌΠ΅ΡΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π±ΡΠ»ΠΎ ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ. ΠΠ· ΡΠΏΠΈΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ, Π° Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΠΎ ΠΏΠΎΡΠΎΠΊ, Π΄ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Ρ ΠΆΠ΄Π°Π²ΡΠΈΠΉ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» Π² native API QNX:
int SyncSemPost(sync_t* sync);Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ POSIX ΠΈ QNX API Π² Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
Π€ΡΠ½ΠΊΡΠΈΡ
sem_post()
EINVALsem;
ENOSYSsem_post()Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
sem_post()SyncSemPost()
EAGAIN
EFAULTsync
EINTR
EINVALsyncΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠ½ΠΊΡΠΈΡ QNX API Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½Π΅Π΅ Π² ΠΏΠ»Π°Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°
int sem_getvalue(sem_t* sem, int* value);ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎ Π°Π΄ΡΠ΅ΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π²
valueΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ:
EINVALsem.ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, ΡΠ΅ΠΌΠ°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π½Π½ΠΎΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ. ΠΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ Π±Π°Π·ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΡΠΎΠΈΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΡΠΎ ΡΠ°ΠΊ, Π½ΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ ΠΈ Π² ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ², ΡΠ°ΠΊ ΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° Π΄Π²ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠΌ Β«ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉΒ», ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊ Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡΒ» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ΅Π°ΠΊΡΠΈΠΉ. ΠΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π²Π΅ΡΡΠΌΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠΈ Β«Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡΒ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ) ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ - Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ), Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ .