18
Π ΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΏΡΡΡΡ ΠΈ Π½Π΅ ΡΠ°ΠΌΡΡ Π±Π»Π°Π³ΠΎΠ·Π²ΡΡΠ½ΡΡ, ΠΌΡ Π·Π΄Π΅ΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ ΠΈΠ· [12].
19
Π Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ°ΡΡΠΎ Π½Π΅ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Ρ (ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ), ΡΡΡΠ΄Π½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΡΡΠ΄Π½Ρ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
20
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π»ΠΈΡΠ΅Π½ΠΎ ΡΠΌΡΡΠ»Π° ΠΈ Π½Π΅ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ, Π²Π΅Π΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Β«ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΒ» ΠΠ‘, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ². Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΏΠΎΡΠΎΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
21
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° β Β«Π°Π΄Π°ΠΏΡΠΈΠ²Π½Π°ΡΒ» (SCHED_ADAPTIVE), ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ, Β«ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅ΡΒ». ΠΠΈΠ΄ΠΈΠΌΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠ±ΡΠΈΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡΡΡΠ°Π΅Ρ ΠΎΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Β«QNX-Π ΠΎΡΡΠΈΡ 2003Β» Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ADAPTIVE-Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈ QSSL ΠΎΡΠ²Π΅ΡΠ°Π»ΠΈ ΡΠ°ΠΊ: Β«ΠΡΠΎΡ Π²ΠΈΠ΄ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ» Π² QNX 4.xx, Π° Π² QNX 6.x Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ Π²Π²Π΅Π΄Π΅Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ° SPORADIC-Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈΒ». Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ ΡΠΏΠΎΡΠ°Π΄ΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΎΡΠ½ΠΎ Π²ΡΡΠ°Π·ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠΉ.
22
ΠΡΠΎΡ ΡΠ΅ΡΡ ΠΈ Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ Linux ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² (ΠΈΠΌΡ Π½Π°ΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ) ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° http://qnxclub.net.forum.
23
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ POSIX ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠΈΠΏΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠΎΠΊΠ° (ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). QNX Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π°Π³ΠΈ Π² Π°ΡΡΠΈΠ±ΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΅ΡΠ΅ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
24
Π Π°Π·Π½ΠΈΡΠ° Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ pthread_cleanup_push() ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ Β«{Β» Π±Π΅Π· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ Β«}Β», Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ pthread_cleanup_pop() Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ Β«}Β», Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
25
ΠΡ ΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Β«ΠΊΡΠ°ΡΠΈΠ²Π°Ρ Π½Π°ΡΠΎΠ΄Π½Π°Ρ Π»Π΅Π³Π΅Π½Π΄Π°Β» (ΠΈ ΡΡΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠΎΠΉ ΠΈ Π² Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅), ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ (Π² ΡΠΌΡΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°), ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΡ.
26
ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΡΠΌΠ° Β«Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Β»: Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
27
ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΡΠ°Π½Π΄Π°ΡΡΡ POSIX ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΡΠ½ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΡ ΠΈΡ Ρ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠΎΠΉ ΠΏΠΎΡΠΎΠΊΠΎΠ².
28
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΠ³Π½Π°Π»Π° β ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΡΠ΅Π°ΠΊΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°; Π½Π°Π»ΠΈΡΠΈΠ΅ (+) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°ΠΌΠΏΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, Π° Π½Π°Π»ΠΈΡΠΈΠ΅ (-) β Π΄Π»Ρ ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π΄Π°ΠΌΠΏ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ. Π ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΈΠ³Π½Π°Π»Ρ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² QNX.
29
ΠΡΠ΅ ΡΡΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΡΡ Π²ΡΡΠ΅.
30
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ XSI ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π΅ sa_handler, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π΅ sa_sigaction, Π½ΠΎ Π½Π΅ ΠΎΠ±Π° ΠΏΠΎΠ»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (Π² ΡΠ»ΡΡΠ°Π΅ Β«ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉΒ» ΡΡΡΡΠΊΡΡΡΡ sigaction, ΡΠΌ. Π²ΡΡΠ΅). Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ QNX Π·Π° ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ union ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Ρ ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ.
31
ΠΠΎΠ΄Π΅Π»Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π²Π²Π΅Π΄Π΅Π½Π° Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π½ΠΈΠΆΠ΅.
32
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π²ΠΈΠ΄Π° sigaction act = { &catchint, 0, (sigset_t)0};, Π±ΡΠ΄ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ·-Π·Π° ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ struct sigaction Π² ΡΠ°Π·Π½ΡΡ ΠΠ‘ UNIX.
33
ΠΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π£. Π‘ΡΠΈΠ²Π΅Π½ΡΠ° Π² QNX Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ β ΠΎΠ½ΠΎ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΏΠΎ ΡΠΈΠ³Π½Π°Π»Ρ. Π’ΠΎΠ½ΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅, Π½ΠΎ ΠΎΠ½ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. ΠΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎ, ΡΡΠΎΠ±Ρ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· ΡΠ΄Π΅Π»Π°ΡΡ Π°ΠΊΡΠ΅Π½Ρ Π½Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΡΡΠΈΠΌΡΡ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ QNX ΠΎΡ ΡΡ Π΅ΠΌ POSIX (ΠΈΠ»ΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΈ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΠ‘).
34
Π€ΡΠ½ΠΊΡΠΈΡ SignalProcmask() ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠ΅Π΅Π½ΡΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ (Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ ) ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ: SignalProcmask_r().
35
Π Π·Π΄Π΅ΡΡ Π²ΠΎΠΏΡΠΎΡ Π½Π΅ Π² ΠΏΠ»Π°Π³ΠΈΠ°ΡΠ΅. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π . ΠΠ΅ΡΡΠ΅Π½ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ°Π» Ρ QSSL ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΠ°ΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅Π³ΠΎ ΠΌΠ°Π½Π΅ΡΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ ΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΡΡ ΠΊΠ½ΠΈΠ³Π° Π . ΠΠ΅ΡΡΠ΅Π½Π° [1] ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΡΠΈΠ²Π΅Π΅.
36
Π€ΡΠ½ΠΊΡΠΈΠΈ SyncMutexRevive() ΠΈ SyncMutexRevive_r(), ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΎΡΡ Π²ΡΡΠ΅, ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅: ΠΏΠ΅ΡΠ²Π°Ρ ΡΠΎΡΠΌΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ -1 Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ errno, Π° Π²ΡΠΎΡΠ°Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ.
37
ΠΠ°Π±Π°Π²Π½ΠΎ! Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ Π·Π°Ρ Π²Π°ΡΠΎΠ² Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΌΡΡΡΠ΅ΠΊΡΠ°. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
38
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΠΎΠΊ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈ ΠΌΡ Π½Π΅ ΡΡΠ°Π½Π΅ΠΌ ΠΎΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ. ΠΡΠΎ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΠΊΠΎΡΠ΅Π΅, ΠΏΡΠ΅Π΅ΠΌΡΡΠ²Π΅Π½Π½ΠΎΡΡΡΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΠΠ‘ QNX β 4.X ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΌΠΈ, Ρ.ΠΊ. Π»ΠΎΠ³ΠΈΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ 20 Π»Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π»ΠΈΠ½ΠΈΠΈ QNX.
39
ΠΠ°ΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ spawn*() ΠΈ exec*(), API ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π»ΡΠ΅ Π³ΡΡΠΏΠΏΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΠΈΡ ΡΡ ΡΡΡΡΠΈΠΊΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½ ΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
40
ΠΡ ΡΠΏΡΠΎΡΠΈΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ thread_pool_create(), ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ thread_pool_t*, Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ thread_pool_start() ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ void*? ΠΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² QNX, ΠΈΠ»ΠΈ Π³Π»ΡΠ±ΠΎΠΊΠ°Ρ ΡΠ΅ΡΠΌΡΠΆΠ½Π°Ρ ΠΏΡΠ°Π²Π΄Π°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ.
41
ΠΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ Β«ΡΡΠ°Π·ΡΒ» ΠΈ Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ: Π΅Π΅ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»Π°ΡΡ Π·Π° ΠΏΠΎΡΡΠΈ 20 Π»Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ QNX, Π½ΠΎ Π½Π΅ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ². Π QNX 6.X ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΄Π°ΡΡ Π΅ΠΉ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
42
Π ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠΌ ΠΠ°ΠΉΡΠ΅Π²ΡΠΌ ΠΈ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π‘Π΅ΡΠ³Π΅Π΅ΠΌ ΠΠ°Π»ΡΡΠ΅Π²ΡΠΌ: http://qnxclub.net/files/articles/resmgr/resmgr.pdf.gz.
43
Π‘ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ QNX 4 ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΆΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠΉ Β«ΠΏΡΠΎΡΠ΅ΡΡΒ» ΠΈ Β«ΠΏΠΎΡΠΎΠΊΒ» Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ ΡΠΌΡΡΠ»Π° ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΠΏΡΠΎΡΠ΅ΡΡΒ».