ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠΌΒ» (pulse). ΠΠΌΠΏΡΠ»ΡΡ β ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅:
β’ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ 40 Π±ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (8-Π±ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ 32 Π±ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ );
β’ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ;
β’ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°;
β’ ΡΡΠ°Π²ΠΈΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ΅ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠ°
ΠΡΠΈΠ΅ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ: ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅, ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceive(), ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΠΎΡΠΎΠΊ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ MsgReply() ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ, ΠΊΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΎΠ±ΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, MsgReceivePulse(), ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ².
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎ Π·Π°Π±Π°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠ°ΠΌΠΈ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ MsgReceive() ΠΏΡΠΈ ΠΈΡ ΠΏΡΠΈΠ΅ΠΌΠ΅, ΠΈΠΌΠ΅Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π²Π΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠΌ, Π° Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π ΠΊΠΎΠ΄Π΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌΡ Π½ΠΈΠΆΠ΅:
#include <sys/neutrino.h>
rcvid = MsgReceive(chid, ...);
if (rcvid == 0) { // ΠΡΠΎ ΠΈΠΌΠΏΡΠ»ΡΡ
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΈΠΌΠΏΡΠ»ΡΡΠ°
// ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ
} else { // ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
// ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ
}
Π§ΡΠΎ Π²Π½ΡΡΡΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΠ°?ΠΡΠ°ΠΊ, Π²Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ. Π§ΡΠΎ Ρ Π½Π΅Π³ΠΎ Π²Π½ΡΡΡΠΈ? ΠΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° <sys/neutrino.h>:
struct _pulse {
_uint16 type;
_uint16 subtype;
_int8 code;
_uint8 zero[3];
union sigval value;
_int32 scoid;
};
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ type ΠΈ subtype ΡΠ°Π²Π½Ρ Π½ΡΠ»Ρ (ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΈΠΌΠΏΡΠ»ΡΡ); ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² code ΠΈ value ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΌ. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ code Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ» ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ ΠΈΠΌΠΏΡΠ»ΡΡ, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ value Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ 32 Π±ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ , Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΠΌΡΡ Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠΌ. ΠΡΠΈ Π΄Π²Π° ΠΏΠΎΠ»Ρ ΠΈ Π΅ΡΡΡ ΡΠ΅ ΡΠ°ΠΌΡΠ΅ 40 Π±ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°; Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ.
Π―Π΄ΡΠΎ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° code, ΠΎΡΡΠ°Π²Π»ΡΡ 127 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² β Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
ΠΠ»Π΅ΠΌΠ΅Π½Ρ value Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° union:
union sigval {
int sival_int;
void *sival_ptr;
};
ΠΠΎΡΡΠΎΠΌΡ (Π² ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅) Π²Ρ ΡΠ°ΡΡΠΎ Π±ΡΠ΄Π΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠΎΠΉ:
#include <sys/neutrino.h>
rcvid = MsgReceive(chid, ...
if (rcvid == 0) { // ΠΠΌΠΏΡΠ»ΡΡ
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΈΠΌΠΏΡΠ»ΡΡΠ°
switch (msg.pulse.code) {
case MY_PULSE_TIMER:
// Π‘ΡΠ°Π±ΠΎΡΠ°Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ²,
// Π½Π°Π΄ΠΎ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°ΡΡ...
break;
case MY_PULSE_HWINT:
// ΠΠΌΠΏΡΠ»ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
// ΠΠ°Π΄ΠΎ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² ΠΏΠΎΠ»Π΅ Β«valueΒ»...
val = msg.pulse.value.sival_int;
// Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ...
break;
case _PULSE_CODE_UNBLOCK:
// ΠΡΠΎ ΠΈΠΌΠΏΡΠ»ΡΡ ΠΎΡ ΡΠ΄ΡΠ°, ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
// Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ...
break;
//ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅...
}
} else { // ΠΠ±ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
// ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ
}
Π ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π²Ρ ΠΎΠΏΠΈΡΠ°Π»ΠΈ ΡΡΡΡΠΊΡΡΡΡ msg ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«struct _pulse pulse;Β», ΠΈ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ MY_PULSE_TIMER ΠΈ MY_PULSE_HWINT. ΠΠΎΠ΄ ΠΈΠΌΠΏΡΠ»ΡΡΠ° _PULSE_CODE_UNBLOCK β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅Ρ ΡΠ°ΠΌΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ², Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΄ΡΠ°, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ Π²ΡΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² (Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ value) Π² <sys/neutrino.h>.
Π€ΡΠ½ΠΊΡΠΈΡ MsgReceivePulse()Π€ΡΠ½ΠΊΡΠΈΠΈ MsgReceive() ΠΈ MsgReceivev() ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΡ. ΠΡΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΈΠ½ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΡΡΠ°Π·Ρ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·-Π·Π° Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ). Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π°ΡΡΡΠΎΠΈΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° (ΠΈΠ»ΠΈ ΡΠ°ΠΉΠΌΠ΅Ρ, ΠΈΠ»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅) Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²Π°ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ Β«ΠΆΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅Β», Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π²Π°ΠΌ Π·Π°ΠΏΡΠΎΡ, Π° ΠΏΠΎΡΠΎΠΌ, ΠΏΠΎΠΊΠ° Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ± ΠΎΡΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΠΎΡ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ β Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΡΠΊΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΎ, ΠΈ Π½Π°Π΄ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡΡ.
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Β«Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎΒ» ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ². Π’ΡΡ-ΡΠΎ ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΡ MsgReceivePulse():
#include <sys/neutrino.h>
int MsgReceivePulse(int chid, void *rmsg, int rbytes,
struct _msg_info *info);
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceive() β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ°Π½Π°Π»Π°, Π±ΡΡΠ΅Ρ (ΠΈ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ), ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ info β ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π΅Π³ΠΎ Π² ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ Β«ΠΡΠΎ ΠΏΠΎΡΠ»Π°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅?Β» ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ info Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΈΠΌΠΏΡΠ»ΡΡΠ°Ρ . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠ²Π΅Ρ Π½Π΅Π·Π°ΠΌΡΡΠ»ΠΎΠ²Π°Ρ: ΡΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ NULL!
Π€ΡΠ½ΠΊΡΠΈΡ MgsReceivePulse() ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΡ. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π²Π°Ρ Π±ΡΠ» ΠΊΠ°Π½Π°Π» Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π½Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceivePulse() (ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π½Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceive()), ΠΈ Π½Π΅ΠΊΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΡΠ°Π»ΡΡ Π±Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ (Send-blocked) Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠΎΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ MsgReceive(). Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ MsgReceivePulse() Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ MsgReceivePulse() ΠΈ MsgReceive(), β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ MsgReceivePulse() ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ ΠΏΡΠΈΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΡ MsgReceive() ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΡΠ»ΡΡΡ, ΡΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ! ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceivePulse() Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π², Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ Π² Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ MsgReceive() ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΡ, Π° ΡΡΠ½ΠΊΡΠΈΡ MsgReceivePulse() ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΡ, ΡΠΎ ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ? ΠΠ±ΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ ΡΠ°ΠΊΠΎΠΉ. Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ MsgReceive(). ΠΡΠΎΡ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² (ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² β ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΠ»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ) ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²- ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°), Π²Ρ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ MsgReceivePulse(). Π€ΡΠ½ΠΊΡΠΈΡ MsgReceivePulse() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΡ, Π° Π·Π½Π°ΡΠΈΡ, Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠΊΠ° Π²Ρ ΠΆΠ΄Π΅ΡΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΠ°, ΠΊ Π²Π°ΠΌ Π½Π΅Π½Π°ΡΠΎΠΊΠΎΠΌ Π½Π΅ ΠΏΡΠΎΡΠΎΡΠΈΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ Π·Π°ΠΏΡΠΎΡ.
Π€ΡΠ½ΠΊΡΠΈΡ MsgDeliverEvent()
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ Π²ΡΡΠ΅ Π² ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ Β«ΠΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΎΠ±ΠΌΠ΅Π½Π°Β», ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΡΡΠ°ΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ.
Π’Π°ΠΊΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Ρ ΠΎΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π²ΡΠ΄Π΅Π»ΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Ρ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΆΠ΄ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΎ. ΠΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ, Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠΈΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΡΠ°Π·Ρ, ΠΈ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Β«ΠΠ°ΠΊΠ°Π· ΠΏΡΠΈΠ½ΡΡ; Ρ ΡΠΊΠΎΡΠΎ Π²Π΅ΡΠ½ΡΡΡΒ». ΠΠ΄Π΅ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠΈΠ», ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π΅ΠΌΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Β«ΠΡΠΎΡΠ½ΠΈΡΡ, Π²ΠΎΡ ΡΠ²ΠΎΠΉ Π·Π°ΠΊΠ°Π·.Β» ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΎΠ±ΠΌΠ΅Π½Π°, ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΡΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°?