ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Microsoft Windows
ΠΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ°Π· Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ° suspend. ΠΠ»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° Resume. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Ρ.ΠΊ. ΠΌΠ΅ΡΠΎΠ΄ Suspend ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠ°, a Resume ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Microsoft Windows (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- ΠΠ°Π΄Π°Π½ΠΈΠ΅
- 1.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
- 1.2 ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π·Π°Π΄Π°Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ
- 2.1 ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
- 2.2 ΠΠ΅ΡΠΎΠ΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
- 2.3 ΠΠ΅ΡΠΎΠ΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ
- 3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
- 3.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
- 3.2 Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
- 3.3 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
- 4 ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
- Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ°Π΄Π°Π½ΠΈΠ΅
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π ΠΈΠ· N ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ — 999 Π΄ΠΎ 999 Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΠΈ ΡΠΈΡΠ»Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ T, N ΠΈ T Π²Π²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π΄Π²ΡΠΌΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π ΠΈ Π‘, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΡΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
ΠΠ°Π΄Π°Π½ΠΈΠ΅ B | ΠΠ°Π΄Π°Π½ΠΈΠ΅ C | |
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ | ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ | |
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
1.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° 1 — Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «START», ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠ»Π΅ΠΉ «N» ΠΈ «Time», ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ³Π½Π°Π» Π½Π° ΠΈΡ Π·Π°ΠΏΡΡΠΊ.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π» ΠΎΠ± Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ±ΡΡΠΈΠ΅. ΠΠ° Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ (Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ 1, 2,3) ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ΅. ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅. ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «STOP» ΠΏΠΎΡΠΎΠΊΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ.
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° 1, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
1.2 ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π³ΡΡΠΏΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
— Π’ΡΠΈ ΠΏΠΎΠ»Ρ (Thread1, Thread2, Thread3) Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
— «N» — ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
— «Time» — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ (Thread1, Thread2, Thread3).
ΠΠ½ΠΎΠΏΠΊΠ° «START» ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠΎΠΉΠΊΠΈ ΡΠΈΡΠ΅Π» ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ (ΠΈΠ½Π΄Π΅ΠΊΡ). Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π² ΠΏΠΎΠ»Ρ (Thread1, Thread2, Thread3).
ΠΠ½ΠΎΠΏΠΊΠ° «STOP» ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
ΠΠ½ΠΎΠΏΠΊΠ° «EXIT» Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΠΈΡ .
ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — ΠΠ»Π°Π²Π½Π°Ρ ΡΠΎΡΠΌΠ°
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π·Π°Π΄Π°Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ
2.1 ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° 1 — ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ — 999 Π΄ΠΎ 999
2.2 ΠΠ΅ΡΠΎΠ΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠ»ΠΎΠΊ ΡΡ Π΅ΠΌΠ° 3 — ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² A = {-359, 126, 803, 913, — 716};
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ min = 0, max = - 359;
A [1] | — 359 — 716 359 < min (0); min = - 359 359 > max (-359); max = - 359 | |
A [2] | — 359 — 716 126 < min (-359); min = - 359 126 > max (-359); max = 126 | |
A [3] | — 359 — 716 803 < min (-359); min = - 359 803 > max (126); max = 803 | |
A [4] | — 359 — 716 913 < min (-359); min = - 359 913 > max (803); max = 913 | |
A [5] | — 359 — 716 716 < min (-359); min = - 716 716 > max (803); max = 913 | |
ΠΡΠ²Π΅Ρ: min = - 716, max = 913.
2.3 ΠΠ΅ΡΠΎΠ΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ
ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ ΡΠΈΡΠ΅Π» Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
1. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΠ΅Π΄Π½Π΅Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅;
2. ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΠΈΡΠ΅Π» Π²ΡΡΠΈΡΠ°Π΅ΠΌ ΡΡΠ΅Π΄Π½Π΅Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅.
Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½ — ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ Π²Π΅Π»ΠΈΡΠΈΠ½ ΠΊ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ.
Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅
(2)
(3)
ΠΡΠΈΠΌΠ΅Ρ 2. ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² A = {-359, 126, 803, 913, — 716};
ΠΠ°ΠΉΡΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ ΡΠΈΡΠ΅Π» ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π» Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ (2):
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ (3):
ΠΠ»ΠΎΠΊ ΡΡ Π΅ΠΌΠ° 2 — ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
3.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² C++Builder ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ TThread.
TThread — Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΌΠΊΠ° ΠΊΠ»Π°ΡΡΠ° TThread, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ° TThread — Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° TThread, Π΄Π΅Π»Π°Π΅Ρ C++Builder ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
__fastcall TMyThread: TMyThread (bool CreateSuspended)
: TThread (CreateSuspended)
{
}
// ——————————————————————————————————;
// B ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Execute (), Π²ΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
void __fastcall TMyThread: Execute ()
{
// — - Place thread code here — —;
}
// ———————————————————————————————————
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ VCL-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Synchronize ()
// —————————————————————————————————————;
void __fastcall ThreadLenghtLine: Execute ()
{
FreeOnTerminate = true; // ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π·Π°Π½ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ
int ColN = N/6;
while (true) {
sum = 0;
WaitForSingleObject (FMain->g_BusyEvent [1], INFINITE); // ΠΆΠ΄ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
ResetEvent (FMain->g_BusyEvent [1]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ResetEvent (FMain->g_BusyEvent [0]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
for (int i = 0; i
sum += CalcLengthLine (FMain->A [i++], FMain->A [i++], FMain->A [i++], FMain->A [i++], FMain->A [i++], FMain->A [i++]);
}
count++;
if (Terminated) break; // ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΠ·Π²Π½Π΅ ΠΏΠΎΡΠΎΠΊ
Synchronize (&Mon); // Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Sleep (T*1000);
}
}
// —————————————————————————————————————;
void __fastcall ThreadLenghtLine: Mon ()
{
FLenghtLine->RELenghtLine->Lines->Add (IntToStr (count) + «)» + FloatToStr (sum));
SetEvent (FMain->g_BusyEvent [0]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
SetEvent (FMain->g_BusyEvent [1]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
}
3.2 Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ (event). ΠΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ: Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ΅. ΠΠΎΠ³Π΄Π° ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π΅Π³ΠΎ Π²ΠΈΠ΄ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΡΠ°Π·Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ VCL ΡΠΎΠ±ΡΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ TEvent.
ΠΠ΅ΡΠΎΠ΄ CreatEvents (): Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° TEvent, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ.
ΠΠ΅ΡΠΎΠ΄ ResetEvent (): ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠ΅ΡΠΎΠ΄ SetEvent (): ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
WaitForSingleObject (): ΠΠ°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΡΠ»ΡΡ ΡΠΈΠ³Π½Π°Π» ΠΎΠ± Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ±ΡΡΠΈΠ΅.
3.3 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ°Π· Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ° suspend. ΠΠ»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° Resume. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Ρ.ΠΊ. ΠΌΠ΅ΡΠΎΠ΄ Suspend ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠ°, a Resume ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ. ΠΠΎΡΠΎΠΊ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠ΅ΡΡΠΈΠΊ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π² Π½ΠΎΠ»Ρ, Ρ. Π΅., Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ·Π²Π°Π»ΠΈ ΠΏΡΡΡ ΡΠ°Π· ΠΌΠ΅ΡΠΎΠ΄ Suspend, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π·Π° Resume, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ (ΠΏΡΡΡΠΉ) Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Resume Π΄Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Execute () ΠΈΠ»ΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ Π·Π°Π½ΡΡΠ°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π»Π°ΡΡ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π½Π°Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ FreeOnTerminate=false.
4 ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π€Π°ΠΉΠ» UMain. cpp
#include
#pragma hdrstop
#include «UMain. h»
#include «UThread1. h»
#include «UThread2. h»
#include «UThread3. h»
// —————————————————————————————————————;
#pragma package (smart_init)
#pragma resource «*. dfm»
TFMain *FMain;
ThreadCreatMassiv *thread1;
ThreadMinMax *thread2;
ThreadIndex *thread3;
// —————————————————————————————————————;
__fastcall TFMain: TFMain (TComponent* Owner)
: TForm (Owner)
{
}
// —————————————————————————————————————;
void __fastcall TFMain: btnStartClick (TObject *Sender)
{
if (eN->Text == «» || eT->Text == «») {
StatusBar1->Panels->Items — >Text="ΠΠ°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ" ;
}else{
StatusBar1->Panels->Items — >Text="" ;
reThread1->Clear ();
reThread2->Clear ();
reThread3->Clear ();
g_Event = CreateEvent (NULL, FALSE, FALSE, NULL); // Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅
g_Event = CreateEvent (NULL, FALSE, TRUE, NULL); // Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅
SetEvent (g_Event [0]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ResetEvent (g_Event [1]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
thread1 = new ThreadCreatMassiv (true); // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ Π² ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ (true)
thread1->N = StrToInt (eN->Text); // ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΠΎΠΊΡ
thread1->T = StrToInt (eT->Text);
thread1->Resume (); // ΠΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
thread2 = new ThreadMinMax (true);
thread2->N = StrToInt (eN->Text);
thread2->T = StrToInt (eT->Text);
thread2->Resume ();
thread3 = new ThreadIndex (true);
thread3->N = StrToInt (eN->Text);
thread3->T = StrToInt (eT->Text);
thread3->Resume ();
}
}
// —————————————————————————————————————;
void __fastcall TFMain: btnStopClick (TObject *Sender)
{
thread1->Suspend (); // ΠΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ°
thread2->Suspend ();
thread3->Suspend ();
}
// —————————————————————————————————————;
void __fastcall TFMain: btnExitClick (TObject *Sender)
{
FMain->Close ();
}
// —————————————————————————————————————;
Π€Π°ΠΉΠ» UThread1. cpp
#include
#pragma hdrstop
#include «UThread1. h»
#include «UMain. h»
#include «UThread2. h»
#pragma package (smart_init)
// —————————————————————————————————————;
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
// Synchronize (&UpdateCaption);
// where UpdateCaption could look like:
// void __fastcall ThreadCreatMassiv: UpdateCaption ()
// {
// Form1->Caption = «Updated in a thread» ;
// }
// —————————————————————————————————————;
__fastcall ThreadCreatMassiv: ThreadCreatMassiv (bool CreateSuspended)
: TThread (CreateSuspended)
{
}
// —————————————————————————————————————;
void __fastcall ThreadCreatMassiv: Execute ()
{
int min = - 999;
int max = 999;
FreeOnTerminate = true; // ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π·Π°Π½ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ
while (true) {
WaitForSingleObject (FMain->g_Event [0], INFINITE);
ResetEvent (FMain->g_Event [1]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ResetEvent (FMain->g_Event [0]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
srand (time (NULL));
for (int i = 0; i < N; i++) {
FMain->A [i] = rand () % (min — max) + min; // Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
}
count++;
if (Terminated) break; // ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΠ·Π²Π½Π΅ ΠΏΠΎΡΠΎΠΊ
Synchronize (&Sinchr); // Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Sleep (T*1000);
}
// —————————————————————————————————————;
}
void __fastcall ThreadCreatMassiv: Sinchr ()
{
AnsiString rezult;
for (int i = 0; i < N; i++) {
rezult += IntToStr (FMain->A [i]) +", «;
SetEvent (FMain->g_Event [0]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
SetEvent (FMain->g_Event [1]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
}
FMain->reThread1->Lines->Add (IntToStr (count) + «)» + rezult); // Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
Π€Π°ΠΉΠ» Thread2. cpp
#include
#pragma hdrstop
#include «UThread2. h»
#include «UMain. h»
#include «UThread1. h»
#pragma package (smart_init)
// —————————————————————————————————————;
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
// Synchronize (&UpdateCaption);
// where UpdateCaption could look like:
// void __fastcall ThreadSredZnach: UpdateCaption ()
// {
// Form1->Caption = «Updated in a thread» ;
// }
// —————————————————————————————————————;
__fastcall ThreadMinMax: ThreadMinMax (bool CreateSuspended)
: TThread (CreateSuspended)
{
}
// —————————————————————————————————————;
void __fastcall ThreadMinMax: Execute ()
{
FreeOnTerminate = true; // ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π·Π°Π½ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ
while (true) {
WaitForSingleObject (FMain->g_Event [1], INFINITE); // ΠΆΠ΄ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
ResetEvent (FMain->g_Event [1]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ResetEvent (FMain->g_Event [0]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
max = 0;
min = 0;
max = FMain->A [0];
for (int i = 0; i
if (FMain->A [i] < min)
{
min = FMain->A [i];
}
if (FMain->A [i] > max)
{
max = FMain->A [i];
}
}
count++;
if (Terminated) break; // ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΠ·Π²Π½Π΅ ΠΏΠΎΡΠΎΠΊ
Synchronize (&Sinhr); // Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Sleep (T*1000);
}
}
// —————————————————————————————————————;
void __fastcall ThreadMinMax: Sinhr ()
{
FMain->reThread2->Lines->Add (IntToStr (count) + «)» + «max = «+ max +», min = «+ min); // Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
SetEvent (FMain->g_Event [0]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
SetEvent (FMain->g_Event [1]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
}
Π€Π°ΠΉΠ» UThread3. cpp
#include
#pragma hdrstop
#include «UThread3. h»
#include «UMain. h»
#include «UThread1. h»
#include «UThread2. h»
#pragma package (smart_init)
// —————————————————————————————————————;
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
// Synchronize (&UpdateCaption);
// where UpdateCaption could look like:
// void __fastcall ThreadIndex: UpdateCaption ()
// {
// Form1->Caption = «Updated in a thread» ;
// }
// —————————————————————————————————————;
__fastcall ThreadIndex: ThreadIndex (bool CreateSuspended)
: TThread (CreateSuspended)
{
}
// —————————————————————————————————————;
void __fastcall ThreadIndex: Execute ()
{
FreeOnTerminate = true; // ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π·Π°Π½ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ
int tN = N/3;
while (true) {
WaitForSingleObject (FMain->g_Event [1], INFINITE); // ΠΆΠ΄ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
ResetEvent (FMain->g_Event [1]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ResetEvent (FMain->g_Event [0]); // Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
rezult = «» ;
for (int i = 0; i < N; i++) {
sum += FMain->A [i]; // ΡΡΠΌΠΌΠ° Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°
}
arg = sum/N; // ΡΡΠ΅Π΄Π½Π΅Π΅ Π°ΡΠΈΡΠΌΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅
for (int i = 0; i < N; i++) {
raz = arg — FMain->A [i]; // ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°
rezult += FloatToStr (raz) +", «;
}
count++;
if (Terminated) break; // ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΠ·Π²Π½Π΅ ΠΏΠΎΡΠΎΠΊ
Synchronize (&Sinhr); // Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Sleep (T*1000);
}
}
// —————————————————————————————————————;
void __fastcall ThreadIndex: Sinhr () {
FMain->reThread3->Lines->Add (IntToStr (count) + «)» + rezult); // Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
SetEvent (FMain->g_Event [0]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
SetEvent (FMain->g_Event [1]); // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΊΡΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π±ΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Windows Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (VCL) Builder C++.
1) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ².
2) Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
3) Π£Π½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π ΠΈΠ· N ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ — 999 Π΄ΠΎ 999 Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΠΈ ΡΠΈΡΠ»Π°.
ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
Π ΡΡΠ΅ΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠΈΡΠ΅Π» ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ.
ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ±ΡΡΠΈΠΉ.
1. ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠΠΠ ΠΠ¦ΠΠΠΠΠ«Π Π‘ΠΠ‘Π’ΠΠΠ«» Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² 3-Π³ΠΎ ΠΊΡΡΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ 230 102 ΠΠ‘ΠΠΠ£/ ΡΠΎΡΡΠ°Π²ΠΈΡΠ΅Π»Ρ: ΠΊ. Ρ. Π½., Π΄ΠΎΡ.Π. Π. Π¦ΡΠ³Π°Π½Π΅Π½ΠΊΠΎ.
2. Π ΠΈΡ ΡΠ΅Ρ ΠΠΆ. Windows Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ². Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ Win32-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ 64-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Windows / ΠΠ΅Ρ. Ρ Π°Π½Π³Π». — 4-Π΅ ΠΈΠ·Π΄. — Π‘ΠΏΠ±.: ΠΠΈΡΠ΅Ρ; Π.: ΠΠ·Π΄-Π²ΠΎ «Π ΡΡΡΠΊΠ°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡ»; 2008. — 720 ΡΡ.
3. Π. Π―. ΠΡΡ Π°Π½Π³Π΅Π»ΡΡΠΊΠΈΠΉ — Π‘++ Builder 6 ΠΠ½ΠΈΠ³Π° 1 Π―Π·ΡΠΊ C++. ΠΠΠΠΠ 2002 Π³.