Π΄Π»Ρ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ
ΠΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°ΡΡΡΡ Π² Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ»Π°ΡΡ, ΡΠ»Π΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ.
.NET ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ:
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ Monitor ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΏΠΎΠ²ΡΡΠΈΠ² ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΠ»Π°ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ System.Collections.Concurrent. ΠΡΠΈ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, Π³Π΄Π΅ ΠΊΠ»Π°ΡΡΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΡΡΠ΄ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ | ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ | Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ | Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ | ΠΠΎΠ»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° | ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° | ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° |
---|---|---|---|---|---|---|
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ |
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ΅Ρ | ΠΠ° | ΠΠ° | ΠΠ΅Ρ |
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π° | ΠΠ΅Ρ | ΠΠ΅Ρ | Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ | ΠΠ΅Ρ | Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ | Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ |
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ | ΠΡΡΡΠ½ΡΡ |
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Ρ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Ρ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΡΠ½ΡΡ
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π°
ΠΠ»Π°ΡΡ Monitor ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.
Visual Basic ΠΈ C# ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ lock Π² C# ΠΈΠ»ΠΈ SyncLock Π² Visual Basic. ΠΡΠ»ΠΈ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. ΠΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· Π±Π»ΠΎΠΊΠ°.
ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ lock Π SyncLock ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Monitor.Enter ΠΈ Monitor.Exit, ΡΡΠΎΠ±Ρ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Ρ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Monitor.
ΠΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΎΡΠΌΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ MethodImplAttribute ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ MethodImplOptions.Synchronized, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Monitor ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π±Π»ΠΎΠΊΠΈΡΡΡ Π²ΡΠ΅ ΡΠ΅Π»ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Thread.Interrupt ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π°. Thread.Interrupt ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠ°ΠΊ Thread.Sleep.
ΠΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΠΉΡΠ΅ ΡΠΈΠΏ, Ρ. Π΅. typeof(MyType) Π² C#, GetType(MyType) Π² Visual Basic ΠΈΠ»ΠΈ MyType::typeid Π² C++, Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² static (ΠΌΠ΅ΡΠΎΠ΄Ρ Shared Π² Visual Basic). ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΊΡΡΡΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ this Π² C# ( Me Π² Visual Basic). ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΊΡΡΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΆΠΎΠΉ ΠΊΠΎΠ΄, Π²ΡΠ·Π²Π°Π² ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
Visual Basic ΠΈ C# ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Monitor.Enter ΠΈ Monitor.Exit. Visual Basic ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ SyncLock, Π° C# ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ lock.
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅ Π±Π»ΠΎΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, Π²Π²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ lock ΠΈΠ»ΠΈ SyncLock, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ C# ΠΈ Visual Basic Π²ΡΠ΄Π°ΡΡ Π±Π»ΠΎΠΊ try/finally Ρ Monitor.Enter Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° try ΠΈ Monitor.Exit Π² Π±Π»ΠΎΠΊΠ΅ finally. ΠΡΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² Π±Π»ΠΎΠΊΠ΅ lock ΠΈΠ»ΠΈ SyncLock, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ finally, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΡΠΈΡΡΠΊΡ.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ
ΠΠ΅ΡΠΎΠ΄ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ ΠΈΠ· Π½Π΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Mutex.Release ()
Π― Π½Π°ΡΠ΅Π» ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ Π½Π΅ Π±ΡΠ»Π° ΠΌΠΎΠΈΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ. ΠΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄:
8 ΠΎΡΠ²Π΅ΡΠΎΠ²
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ Π·Π° ΠΎΡΠ²Π΅ΡΡ!
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Monitor.Exit, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ ‘await’ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ SemaphoreSlim, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΊ ΠΎΡΡΠ°Π²Π°Π»ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π½Π°ΡΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Ρ Π²ΠΈΠ΄Π΅Π» ΡΡΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅,
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΎ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΡΠ°Π·Π°, ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΈΠ·-Π·Π° ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΌΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΌ Ρ Π½Π΅ Π²Π»Π°Π΄Π΅Π».
ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΌΡΡΡΠ΅ΠΊΡ? Π₯ΠΎΡΡ Π²Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ, ΡΡΠΎ filterCtiCallLog.CreateFilteredCtiCallLogSync() ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅?
ΠΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ³ΡΠΎΠ·ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅Π³ΠΎ Π·Π°ΠΏΠΎΠ»ΡΡΠΈΠ»Π°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ Π΄Π»Ρ CreateFilteredCtiCallLogSync () ΠΈΠ»ΠΈ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΄ΡΠ°), Π²ΡΠΏΡΡΠΊ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, try / finally / release? Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ Π²ΡΡ ΠΎΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΈΡΡΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠΊΠΈΠ½ΡΠ» ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΡΠ΅ΠΌ Π² ΡΡΡΠΎΠΊΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ. ΠΠΎ ΡΡΡΠΈ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ ΡΠ΅ΠΉΡΠ°Ρ (Π² Π½Π°ΡΠ°Π»Π΅ 2020 Π³ΠΎΠ΄Π°), ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅.
Π Π°Π±ΠΎΡΠ° Ρ Mutex
Π Π°Π±ΠΎΡΠ° Ρ mutex
ΠΠΎΡΠΏΠΎΠ΄Π°, Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ mutex. ΠΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ 3.
Π Π°Π±ΠΎΡΠ° Ρ Mutex
ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π΄Π½Ρ ΡΡΡΠΎΠΊ! Π Π΅ΡΠΈΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΅ΡΠ΅Π· Mutex, ΡΡΠΎ ΡΠΎ Π½Π΅.
mutex
ΠΠ΅Π½Ρ Π΄ΠΎΠ±ΡΡΠΉ. ΠΡΠΎΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΌΠ½Π΅ Π΄ΡΡΠ°ΠΊΡ m_hShared = OpenMutex(MUTEX_ALL_ACCESS, TRUE.
Mutex
#include #include #include #include #include.
skyfer, Π²Ρ ΠΌΡΡΡΠ΅ΠΊΡ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΠ»ΠΎΠΌ, Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΡΡΡΠ΄Π° ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°.
Gartus13, Π½Ρ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Ρ ΠΎΡΡ Π²ΠΈΠ½Π΄Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π»ΠΈΠ½ΡΠΏΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ.
Π° ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°Π½ΡΡΡΠΉ ΠΌΡΡΡΠ΅ΠΊΡ? Π° ΡΠΎ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠΈΡΠ°Π» ΡΠ°ΠΌ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎ Π·Π°Π½ΡΡΠΎΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°, ΠΈ Π³ΡΠ³Π» Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎ.
skyfer, ΡΡΡΠ°Π½Π½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΌΡΡΡΠ΅ΠΊΡΡ ΡΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ
Π― Π±Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ (Π·Π°Π΄Π°ΡΠ° ΠΎΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ctrl+C):
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π±Π΅ΡΠ΅ΡΠ΅ Mutex ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ. ΠΠ°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΡΠΆΠ½ΠΎ 2 ΠΌΡΡΡΠ΅ΠΊΡΠ°? ΠΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΌΡΡΡΠ΅ΠΊΡ + ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ?
ΠΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΊΡΡΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡ Π·Π΄Π΅ΡΡ.
Mutex
ΠΡΡΡ ΠΊΠΎΠ΄, Π²ΠΈΠ΄Π°: public static Mutex mut = new Mutex(); public static void.
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ Mutex
ΠΠ½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎ, ΠΈ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΈΡΠΊ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. ΠΡΠΈΡΡΡΠΏΠΈΠ» Ρ, Π·Π½Π°ΡΠΈΡ, ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² ΠΏΠ»ΡΡΠ°Ρ
. Π, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅, Π΄ΠΎΡΠ΅Π» Π΄ΠΎ ΡΠ΅ΠΌΡ.
Monitor ΠΠ»Π°ΡΡ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎ Π²ΡΠΏΡΡΠΊΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π½Π΅ΡΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΡΠ²Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌΡΡ , ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π·Π΄Π΅ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ.
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ.
ΠΡΠΈΠΌΠ΅ΡΡ
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Monitor Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Random ΠΊΠ»Π°ΡΡΠΎΠΌ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄Π΅ΡΡΡΡ Π·Π°Π΄Π°Ρ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ 10 000 ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΈ ΠΈΡ ΡΡΠΌΠΌΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°Π΄Π°Ρ ΡΡΠΈ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ², Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ total ΠΈ n ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½. Interlocked.AddΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ; ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠ°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ UnSyncResource.Access Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ
ΠΠ±Π·ΠΎΡ ΠΊΠ»Π°ΡΡΠ° Monitor.
Monitor ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠ½ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ½ Π½Π΅ ΡΠ²ΡΠ·Π°Π½. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Monitor ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½; ΠΌΠ΅ΡΠΎΠ΄Ρ Monitor ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Monitor ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ ΡΡΡΠΎΠΊ (ΡΠΎ Π΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ String ), Π° Π½Π΅ ΡΠΈΠΏΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Enter ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΎΠ±ΡΠ°ΡΠ°ΡΡΠΈΠΌΠΈΡΡ ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
Enter, TryEnter | ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°. ΠΠΈ ΠΎΠ΄ΠΈΠ½ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠΉΡΠΈ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. |
Wait | ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΌΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. |
Pulse (ΡΠΈΠ³Π½Π°Π»), PulseAll | ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ. Π‘ΠΈΠ³Π½Π°Π» ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, Π° Π²Π»Π°Π΄Π΅Π»Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π³ΠΎΡΠΎΠ² ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. ΠΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΡΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, Π±ΡΠ»ΠΎ Π»ΠΈ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. |
Exit | ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΠ½Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ, Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΉ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. |
ΠΠ±ΡΠ΅ΠΊΡ Lock
ΠΊΠ»Π°ΡΡ Monitor ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· static ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (Π² C#) ΠΈΠ»ΠΈ Shared (Π² Visual Basic), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ°Π·Π΄Π΅Π»Ρ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΡΠΎΠΊΠΈ, Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Monitor Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ (ΡΠΎ Π΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ), Π° Π½Π΅ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π₯ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Enter ΠΈ Exit, ΠΎΠ½ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Enter Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, Π° ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² Exit, ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Enter, ΠΏΠΎΡΡΠΎΠΌΡ Monitor Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SynchronizationLockException Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«ΠΠ»Ρ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²Β».
Π₯ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Enter ΠΈ Exit, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΎΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ Π΄Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ². ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²Π½Π΅ΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»ΡΡ .
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Enter ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Exit Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠΌΠ΅ΠΆΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Enter ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² try Π±Π»ΠΎΠΊ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ·ΠΎΠ² Exit ΠΌΠ΅ΡΠΎΠ΄Π° Π² finally Π±Π»ΠΎΠΊ. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ½ΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
ΠΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠ°Π½ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Monitor ΠΊΠ»Π°ΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ C# ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Visual Basic SyncLock Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, Π° Π½Π΅ Π°ΡΡΠΈΠ±ΡΡΠ°.
Π₯ΠΎΡΡ Π΄Π»Ρ Enter Exit ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅, ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ.
Pulse, PulseAll ΠΈ Wait
ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Wait ΠΈ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΠΈΠΌΠ΅Π΅ΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ. ΠΠΎΡΠΎΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ, Wait ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ Monitor.Pulse Monitor.PulseAll ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π»Π°Π΄Π΅Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ). WaitΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
ΠΠΎΠ½ΠΈΡΠΎΡΡ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Monitor ΠΊΠ»Π°ΡΡΠ° ΠΈ WaitHandle ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
MonitorΠΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ, ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ±ΡΠ΅ΠΊΡΡ WaitHandle ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ΄ΠΎΠ±Π½Ρ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π‘Π²ΠΎΠΉΡΡΠ²Π°
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ ΡΠΎΡΡΡΠ·Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°.
ΠΠ΅ΡΠΎΠ΄Ρ
ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΅Π΄ΠΈΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π±ΡΠ»Π° Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π£Π²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ.
Π£Π²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ Π²ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΅Π΄ΠΈΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π±ΡΠ»Π° Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄.
Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΅Π΄ΠΈΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π±ΡΠ»Π° Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΅Π΄ΠΈΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π±ΡΠ»Π° Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ½ΠΎΠ²Π°.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ½ΠΎΠ²Π°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΈΡΡΠ΅ΠΊΠ°ΡΡ, ΠΏΠΎΡΠΎΠΊ Π²ΡΡΠ°Π΅Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ½ΠΎΠ²Π°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΈΡΡΠ΅ΠΊΠ°ΡΡ, ΠΏΠΎΡΠΎΠΊ Π²ΡΡΠ°Π΅Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° (Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅) Π΄ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ Π΅Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ½ΠΎΠ²Π°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΈΡΡΠ΅ΠΊΠ°ΡΡ, ΠΏΠΎΡΠΎΠΊ Π²ΡΡΠ°Π΅Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ½ΠΎΠ²Π°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΈΡΡΠ΅ΠΊΠ°ΡΡ, ΠΏΠΎΡΠΎΠΊ Π²ΡΡΠ°Π΅Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΌΠ΅Π½ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ.
ΠΠ΅ΡΠΎΠ΄ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ ΠΈΠ· Π½Π΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Mutex.Release ()
Π― Π½Π°ΡΠ΅Π» ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ Π½Π΅ Π±ΡΠ»Π° ΠΌΠΎΠΈΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ. ΠΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄:
Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ AutoResetEvent. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ Set () Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, WaitOne () Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ, ΠΏΠΎΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΠΉ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Π ΠΏΠΎΡΠΎΠΌ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ. Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΡΡΠΏΠ΅Ρ ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ (ΡΡΠΎ Π½Π΅ ΡΡΠ½ΠΎ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°ΠΌΠΎΠΊ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Monitor.Exit, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ ‘await’ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ SemaphoreSlim, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΊ ΠΎΡΡΠ°Π²Π°Π»ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅.
Π― Π½Π°ΡΠ΅Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎ ΠΊΠ»Π°ΡΡΠ΅ filterCtiCallLog. Π― ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Π΅Π³ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΠΊΠ°ΠΊ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΡΠ°ΠΊ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. Π‘Π½Π°ΡΠ°Π»Π° Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠΎΠ΄ Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½Π΅ Π½ΡΠΆΠ΅Π½ Π±ΡΠ» ΡΠΏΠΎΡΠΎΠ± ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΊΠ»Π°ΡΡ AsyncOperation ΠΈ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ post. ΠΠΎΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ CtiCallsRetrieved.
ΠΡΠ΅ΠΌ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅ΡΡ!
ΠΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ³ΡΠΎΠ·ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅Π³ΠΎ Π·Π°ΠΏΠΎΠ»ΡΡΠΈΠ»Π°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ Π΄Π»Ρ CreateFilteredCtiCallLogSync () ΠΈΠ»ΠΈ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΄ΡΠ°), Π²ΡΠΏΡΡΠΊ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, try / finally / release? Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ Π²ΡΡ ΠΎΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΈΡΡΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠΊΠΈΠ½ΡΠ» ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ. ΠΠΎ ΡΡΡΠΈ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ ΡΠ΅ΠΉΡΠ°Ρ (Π² Π½Π°ΡΠ°Π»Π΅ 2020 Π³ΠΎΠ΄Π°), ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΡΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΡΠ°Π·Π°, ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΈΠ·-Π·Π° ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΌΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΌ Ρ Π½Π΅ Π²Π»Π°Π΄Π΅Π».
ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΌΡΡΡΠ΅ΠΊΡ? Π₯ΠΎΡΡ Π²Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅?
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π½Π°ΡΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Ρ Π²ΠΈΠ΄Π΅Π» ΡΡΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅,