ΠΠ΅ΡΠΎΠ΄ StopReading Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΡΡΠ½ΠΈΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΡΠΎΠΊΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΠΈΠΌ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠ»ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΊ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠ³ Π±ΡΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΅ΡΠΎΠ΄ StartWriting ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π°Ρ. ΠΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ Π°ΠΊΡΠΈΠ²Π΅Π½, ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΡ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊ ΠΆΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΡ ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΡΠΎΠΊΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΅ΡΠΎΠ΄ StopWriting ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΎΡΠΎΠ²ΡΡ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²ΡΠ΅ΠΌΠΈ ΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠ°, ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΎΠ². ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ. Π-ΡΡΠ΅ΡΡΠΈΡ , Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. Π-ΡΠ΅ΡΠ²Π΅ΡΡΡΡ , Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π±ΡΠ»Π΅Π² ΡΠ»Π°Π³, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π½Π°ΠΌ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π²ΡΠ·ΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²Π½ΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΈΠ»ΠΈ ΡΠ»Π°Π³Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅. ΠΡΠ°ΠΊ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ - Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ»ΠΈ Π±Ρ ΡΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π±Ρ ΡΡΠΏΠΈΠΊΠΎΠ²Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ ΡΠ½Π°ΡΡΠΆΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π²ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΏΡΠΎΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠΌ. ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ°: Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π²Ρ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°: ΠΏΠΎΡΠΎΠΊ, ΠΎΠ±ΡΠ°ΡΠ°ΡΡΠΈΠΉΡΡ ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ°Π·Π΄Π΅Π»Ρ, Π²Π»Π°Π΄Π΅Π΅Ρ ΠΈΠΌ.
Π ΠΊΠ°ΠΊΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ? ΠΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ Π±Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠ±ΡΠΎΡΠ° Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ±ΡΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π»ΠΎ Π±Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ (ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° Π±ΡΠ΄ΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄Π° ΠΏΠΎΡΠΎΠΊΠΈ;
Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ·Π²Π°Π» ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ WaitFor).
ΠΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ TtdReadWriteSync ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 12.1. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΡΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ .
ΠΠΈΡΡΠΈΠ½Π³ 12.1. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠ»Π°ΡΡΠ° TtdReadWriteSync
type
TtdReadWriteSync = class private
FActiveReaders : integer;
FActiveWriter : boolean;
FBlockedReaders : THandle;
{ΡΠ΅ΠΌΠ°ΡΠΎΡ}
FBlockedWriters : THandle;
{ΡΠ΅ΠΌΠ°ΡΠΎΡ}
FController : TRTLCriticalSection;
FWaitingReaders : integer;
FWaitingWriters : integer;
protected
public
constructor Create;
destructor Destroy; override;
procedure StartReading;
procedure StartWriting;
procedure StopReading;
procedure StopWriting;
end;
ΠΡΠΈΠ²Π°ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ FBlockedReaders ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, Π° ΠΏΠΎΠ»Π΅ FBlockedWriters - Π΄Π»Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΠ»Π΅ FController - ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ (ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π» ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΠ΅ ΠΈ Π½Π΅ΠΈΡΠΊΠ°ΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°).
ΠΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° StartReading ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 12.2.
ΠΠΈΡΡΠΈΠ½Π³ 12.2. ΠΠ΅ΡΠΎΠ΄ StartReading
procedure TtdReadWriteSync.StartReading;
var
HaveToWait : boolean;
begin
{ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ}
EnterCriticalSection(FController);
{Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉΡΡ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ, ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ΅Π±Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΏΠΈΡΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ}
if FActiveWriter or (FWaitingWriters <> 0) then begin
inc(FWaitingReaders);
HaveToWait :=true;
end
{Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ΅Π±Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ° ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ}
else begin
inc(FActiveReaders);
HaveToWait := false;
end;
{ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ}
LeaveCriticalSection(FController);
{ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅}
if HaveToWait then
WaitForSingleObject(FBlockedReaders, INFINITE);
end;
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° "Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ". ΠΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π». ΠΠΎ Π²ΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π»ΠΈΠ±ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄Π° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ°, Π»ΠΈΠ±ΠΎ ΡΡΠ°Π·Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π΅Π»ΠΈΡΠΈΠ» ΡΠΈΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, Π° Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π½Π΅Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π½ΠΎ Π²ΡΠΊΠΎΡΠ΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ StopReading, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 12.3.
ΠΠΈΡΡΠΈΠ½Π³ 12.3. ΠΠ΅ΡΠΎΠ΄ StopReading
procedure TtdReadWriteSync.StopReading;
begin
{ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ}
EnterCriticalSection(FController);
{ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ}
dec (FActiveReaders);
{Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ}
if (FActiveReaders = 0) and (FWaitingWriters <> 0) then begin
dec(FWaitingWriters);
FActiveWriter :=true;
ReleaseSemaphore(FBlockedWriters, 1, nil);
end;
{ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ}
LeaveCriticalSection(FController);
end;
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ. ΠΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ, ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π²ΡΡ ΠΎΠ΄. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΡ Π·Π°ΠΏΠΈΡΠΈ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ΅ΠΌΠ°ΡΠΎΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΡ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ½ΠΎΠ²Π° ΡΠΌΠ΅Π½ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΄ΠΎ Π½ΡΠ»Ρ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ StopReading ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ. ΠΠ±ΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ.