Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, уничтоТСния ΠΈ синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для создания ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² 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]); //Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

}.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ