ΠΠΎΡΠΎΠΊ Π ΠΠΎΡΠΎΠΊ Π
sem_wait(&sem); sem_wait(&sem);
/* ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ /* ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ
ΠΎΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. */ ΠΎΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. */
sem_post(&sem); sem_post(&sem);
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ Π·Π°ΡΠΈΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΡΠ°ΡΡΠΊΡ ΠΊΠΎΠ΄Π° (ΡΠ°ΠΊΠΎΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ) Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ; Π·Π΄Π΅ΡΡ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ, ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² sem_wait() Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π° Π»ΠΈΡΡ ΠΏΠΎΠ½ΠΈΠΆΠ°Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π΄ΠΎ Π½ΡΠ»Ρ. Π ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ sem_wait() Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ, Π±ΡΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΎΡΠ΅Π΄ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ ΡΡΠΎΡ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ sem_post(). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π½Π΅Π»ΡΠ·Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π½Π°Π΄ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ, Π²Π½ΠΎΠ²Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π² Π²Ρ ΠΎΠ΄ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ². ΠΠΎΠΏΡΠΎΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ [4], ΠΈ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π·Π΄Π΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠΌ. Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ (3 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅) ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° (Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ, ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΡΡΡ, ΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠΎΠΊΠΎΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠ°, ΡΠ°Π½Π΅Π΅ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΡΠ΅ΡΠ½Π΅Π½ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΡΠΉ Β«ΠΊΠ»ΠΈΠ½ΡΒ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ°, Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ sem_wait() (ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ) ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΡΠΆΠ΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π» ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΈ Π½Π΅Π»ΡΠ·Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π΅Π³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»Π°ΠΊΡΠΈΠΊΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ (Β«ΠΌΠ΅ΡΡΠ²ΡΡ ΠΎΠ±ΡΡΡΠΈΠΉΒ» β deadlock) ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΡΠΌ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ» ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π³ΠΎ Π·Π°Ρ Π²Π°ΡΠΈΠ» (ΡΠΎ Π΅ΡΡΡ Π·Π½Π°Π» ΡΠ²ΠΎΠ΅Π³ΠΎ Ρ ΠΎΠ·ΡΠΈΠ½Π°). Π‘Π΅ΠΌΠ°ΡΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡ, ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ»Π°Π±ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΡΠ°Π²Π½ΠΎΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ [10].
β’ Π§Π°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ Π·Π°Π΄Π°ΡΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΠΈΠΏΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ/ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΌΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ Β«ΠΏΠΎΠ»ΠΎΠΆΠΈΡΒ» Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π²Π° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ), ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅), ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½ΡΠ»Π΅ΠΌ (Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠΈΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ), Π° ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠΈΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡ (ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ), β Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ (ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ Β«ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΒ» ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΡΡΡ).
ΠΠΎΡΠΎΠΊ Π ΠΠΎΡΠΎΠΊ Π
sem_wait(&sem_A); sem_wait(&sem_B);
/* ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ */ /* ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ */
sem_post(&sem_B); sem_post(&sem_A);
ΠΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΠΎΡΠΎΠΊ Π ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ Π΄Π°Π½Π½ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ° Π. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡ sem_A ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ 1, Π° ΡΠ΅ΠΌΠ°ΡΠΎΡ sem_B ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ 0. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ° Π. ΠΠΎΡΠΎΠΊ Π, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²ΠΎΠΉΠ΄Π΅Ρ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½), ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ, ΠΏΠΎΠΊΠΈΠ΄Π°Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ, ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° Π. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊ Π Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π² ΡΠΈΠΊΠ»Π΅ (Π° ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ), ΡΠΎ ΠΏΠΎΡΠΎΠΊ Π Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠΎΠΊ Π Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π½Π΅ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΡ Π΅ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π΄Π²ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. Π ΠΠ‘ QNX ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Β«Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈΒ» ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Β«ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ Β«ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉΒ». ΠΡΠΎΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΠΎΠ·ΠΆΠ΅.
β’ ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°Π΄Π°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π²Π΅ΡΡΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°ΡΠ°Ρ , Π³Π΄Π΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΡΠ΅Π» Β«Π²ΡΠ»Π΅Π΄Β» Π·Π° Π΄ΡΡΠ³ΠΈΠΌ, ΡΠΎ Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ» Π½Π΅ΠΊΠΈΠ΅ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΡ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΡΠΎΠΊ Π ΠΠΎΡΠΎΠΊ Π
while (true) while (true)
{ {
/* ΡΠ°Π±ΠΎΡΠ° A; */ /* sem_wait(&sem); */
sem_post(&sem); ΡΠ°Π±ΠΎΡΠ° B;
} }
ΠΠΎΡΠΎΠΊ Π Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π½Π° 1, Π° ΠΏΠΎΡΠΎΠΊ Π Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΡΠ΅ΠΌΠΈΡΡΡ Β«Π²ΡΠ±ΡΠ°ΡΡ ΡΠ»Π°Π±ΠΈΠ½ΡΒ» ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΡΠΎΡ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ Π½ΡΠ»Ρ. ΠΠ½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ², Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΠΎΡΠΎΠΊ Π Π±ΡΠ΄Π΅Ρ Β«ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΒ» Π·Π° ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠ΅ΠΌ Π΅Π³ΠΎ Β«Π²Π΅Π΄ΡΡΠΈΠΉΒ» ΠΏΠΎΡΠΎΠΊ.
ΠΡΠ΅ΠΌΠΈ ΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π³Π»Π°Π²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°: Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ), ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π΄Π΅Π»Π°Ρ ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π‘Π΅ΠΌΠ°ΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ) Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡ POSIX ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Β«ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Β» ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΌΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π° Π² ΠΠ‘ QNX ΠΊ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ QNX. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΈΠΆΠ΅ ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ Ρ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² ΠΠ‘ QNX. Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ <semaphore.h>. ΠΡΠ»ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ²Π½ΠΎ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°
QNX ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ² β Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅. Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΡΠ΅ΡΠΈ QNET Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ°), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ Π½ΠΈΠΌ ΠΈΠΌΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ QNX. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ, ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΡ ΡΠ°Π²Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ , ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ POSIX (mqueue).
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ² ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ²ΠΎΡ Π³ΡΡΠΏΠΏΠ° ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ.