ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² C++Builder ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ TThread. TThread Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΌΠΊΠ° ΠΊΠ»Π°ΡΡΠ° TThread, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ° TThread Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² 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]); //ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
}.