Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ QNX [8], ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π . ΠΠ΅ΡΡΠ΅Π½Π° [1] Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅:[35] Π²ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ POSIX (Π±Π°ΡΡΠ΅ΡΡ, ΠΆΠ΅ΡΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (sleepon), ΡΠΏΠΈΠ½Π»ΠΎΠΊ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ), ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, Π° Π²ΠΎΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ pthread_mutex_t, sem_t (Π΄Π° ΠΈ pthread_cond_t, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ), ΠΎΠΏΠΈΡΠ°Π½Ρ Π»ΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Β«Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ Β», Π² ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Ρ ΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°ΡΠΎΠΉ ΠΈ ΠΊΡΡ Π½Π΅ΠΉ (ΡΠ΅ΡΠΌΠΈΠ½ bathroom Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠ΅, ΡΠ΅ΠΌ pthread_mutex_t). ΠΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΡ.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΊΡ. Π POSIX-Π²Π°ΡΠΈΠ°Π½ΡΠ΅ API QNX ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ: ΠΌΡΡΡΠ΅ΠΊΡΡ, ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠ΅ΠΌΠ°ΡΠΎΡΡ, Π±Π°ΡΡΠ΅ΡΡ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ, ΠΆΠ΄ΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΏΠΈΠ½Π»ΠΎΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠΎΠ΄Π½ΠΎΠΌ native API QNX ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ: ΠΌΡΡΡΠ΅ΠΊΡ, ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΈ ΡΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ. Π ΡΡΠΎ ΠΏΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΡΡΡΠ΅ΠΊΡΠ°!
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π² POSIX API QNX, ΡΡΡΠΎΠΈΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π°Π½Π°Π»ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ Π² POSIX API, ΡΡΡΠΎΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ° ΠΌΡΠΎΡΠ΅ΠΊΡ-ΡΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ Π±Π°Π·ΠΈΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ, ΡΠΊΠΎΠ»Ρ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΡΡΡ ΠΌΡΡΠ»Ρ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, Π²Π°ΠΆΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π²Π°Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ, ΡΠΎ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π±Π°Π·ΠΈΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ. Π ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π²Π°Ρ.
ΠΡ ΠΏΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Β«ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Β» ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ . Π’ΡΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ‘ QNX β ΠΌΡΡΡΠ΅ΠΊΡ, ΡΡΠ»ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡ β ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΈΠΊΡΠΎΡΠ΄ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
SyncTypeCreate(unsigned type, sync_t* sync, const struct _sync_attr_t* attr);
ΠΠ΄Π΅ΡΡ type ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
_NTO_SYNC_MUTEX_FREE β Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°;
_NTO_SYNC_SEM β Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°;
_NTO_SYNC_COND β Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π‘ΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΠΊΡΠ°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠΈΠΏΡ ΠΌΡΡΡΠ΅ΠΊΡΠ° (pthread_mutex_t), ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (pthread_cond_t) ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° (sem_t) ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ ΡΠΈΠΏΠ° sync_t. Π Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΡΠΈΠΏΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° β sync_attr_t, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π΅ protocol, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΠ‘ Π±ΡΠ΄Π΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ QNX 6.2.1 ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ΅Ρ ΡΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΎΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ². ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΠΌΠ΅ΡΡΠΎ attr ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ NULL) ΠΏΠΎΠ»Π΅ protocol ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PTHREAD_PRIO_INHERIT. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΠ‘ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ QNX Π² ΡΠ΅ΠΎΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²Π°ΠΆΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° Π²ΠΎΠΏΡΠΎΡΠ°: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π»ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ (Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² ΡΠΈΠΏΠ° Π±Π°ΡΡΠ΅Ρ).
Π’Π΅ΡΡΡ [4] ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² (ΠΈΠ»ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ) ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ². ΠΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΈΠ· Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡΡΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ).
Π‘Π΅ΠΌΠ°ΡΠΎΡ (ΡΡΠ΅ΡΠ½ΡΠΉ)
Π‘Π΅ΠΌΠ°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ (Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΏΡΠΎΡΠΈΠΌΠΈ) Π΄Π»Ρ ΠΠ‘ QNX ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Ρ ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ POSIX, Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ POSIX 1003.1 (1993) ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ POSIX 1003b (1995), ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ pthread_* ΠΈ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ; ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ Π½Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° pthread_*.
Π ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΠ΅ΠΉΠΊΡΡΡΡ [10] ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π΄Π²Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠ° β ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ Π½ΡΠ»Ρ. ΠΡΠ»ΠΈ Π½Π΅ΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΆΠ΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ, ΡΠΎ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π²Π½ΠΎΠ΅ 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ (ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° Π½Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²). Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΡΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²: Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅, ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0 Π»ΠΈΠ±ΠΎ 1, ΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅, ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ΅, ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π QNX 6.2.1 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ SEM_VALUE_MAX, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π²Π½ΠΎ 32 767.
ΠΡΠΌΠ΅ΡΠΈΠΌ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: ΡΠ΅ΠΌΠ°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΡΠ΅ΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π. ΠΠ΅ΠΉΠΊΡΡΡΠΎΠΉ, Π±Π°Π·ΠΈΡΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΏΠΎΠ½ΡΡΠΈΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΡ Π²Π»Π΅ΡΠ΅Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² [4], ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ.
ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° (Π·Π°Ρ Π²Π°ΡΠΈΠ²ΡΠ΅Π³ΠΎ Π΅Π³ΠΎ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°, Π° Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° (ΠΏΠΎΡΠΎΠΊ, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π²ΡΠΈΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ), ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ, ΠΈΠ»ΠΈ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈΠΌ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ Π²ΡΠ·Π²Π°Π½ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ QNX, Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ native API, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ API POSIX, ΡΡΡΠΎΡΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ².
ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° Π·Π°Π΄Π°Ρ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
β’ ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ (ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅). Π§Π°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ (Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ) ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΡΡΠΏΠΈΡ Π½Π΅ΠΊΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ (Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅). Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΎΠΉ, Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊ ΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΎΠΊ. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΌΠ°ΡΠΎΡ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ:
ΠΠΎΡΠΎΠΊ Π ΠΠΎΡΠΎΠΊ Π
while (!expression) expression = true;
sem_wait(&sem); sem_post(&sem);
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠΎΠΊ Π ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ sem_wait()), Π° ΠΏΠΎΡΠΎΠΊ Π ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ sem_post()) ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π»ΡΠ±ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ while() Π·Π΄Π΅ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠΌ if(), Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
β’ ΠΠ·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΈ Π΄ΡΡΠ³ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ±ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ, Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π° (Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅). ΠΠ΄Π΅ΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ: