Kaip naudoti kelių sriegių funkciją C++

Kaip Naudoti Keliu Sriegiu Funkcija C



Daugiagija yra kelių vykdymo gijų paleidimo vienoje programoje koncepcija. Tai labai naudinga programavimo kalbų, tokių kaip C++, funkcija, nes leidžia vienu metu atlikti kelias operacijas. C++ kalboje, daugiasriegis galima pasiekti per biblioteka, kurioje pateikiamas klasių ir funkcijų rinkinys, leidžiantis kūrėjams kurti, valdyti ir valdyti kelias gijas.

Daugiagija yra kaip kelių užduočių atlikimas. Tai reiškia, kad vienu metu veikia dvi ar daugiau gijų. Tokioje programoje kiekvienas komponentas vadinamas gija, o kiekviena gija nurodo unikalų vykdymo kelią. Nėra įmontuoto palaikymo daugiasriegis programas iki C++ 11. Vietoj to, šią funkciją visiškai užtikrina operacinė sistema.







Daugiagija taip pat gali būti vadinamas programos padalijimu į mažesnes gijas, kurios vykdomos vienu metu. Siūlų klasė, kuri naudojama daugiasriegis C++ leidžia sukurti daugybę gijų ir valdyti jų vykdymą.



Sukurkite gijas C++

Norėdami sukurti giją C++, naudojame std::gija klasė, kuri yra įtraukta į integruotą gijų biblioteką. A skambinti pateikiamas kaip argumentas klasės objekto konstruktoriui std::gija norėdami sukurti naują giją. Kodas, kuris vykdomas, kai gija yra aktyvi, yra žinomas kaip skambinti . Kai statome a std::gija objektas, sukuriama nauja gija, kuri sukelia kodą, kurį pateikia skambinti būti paleistas. Galima skambinti galima apibrėžti naudojant šiuos tris metodus.



1 būdas: funkcijos rodyklė

Galima skambinti funkcijos naudojant funkcijos žymeklį gali būti apibrėžtos taip.





void function_call ( parametrus )

Sukūrus funkciją, gijos objektas, kuriame yra funkcija, sugeneruojamas taip:



std::thread thread_obj ( function_call, parametrai ) ;

2 metodas: Funkcija Objektas

Naudodami funkcijos objektą išnaudojame operatoriaus perkrovos idėją. Kodas, kuris turi būti paleistas formuojant giją, yra perkrautoje funkcijoje.

klasė Objekto_klasė {
tuščias operatorius ( ) ( parametrus )
{
// kodas, kuris turi būti vykdomas
}
} ;
std::thread gijos_objektas ( Objekto_klasė ( ) , parametrai )

3 metodas: Lambda išraiška

Galima skambinti funkcijos, naudojant lambda išraišką, gali būti apibrėžtos taip.

automatinis f = [ ] ( parametrus ) {
// kodas, kuris turi būti vykdomas
} ;
std::thread gijos_objektas ( f, parametrai ) ;

Multithreading C++ kalboje pavyzdys

#include
#include
naudojant vardų erdvę std;

void func_thread ( tarpt N )
{
dėl ( int i = 0 ; i < N; i++ ) {
cout << '1 gija :: callable => Funkcijos žymeklio naudojimas \n ;
}
}

klasė thread_obj {
viešas:
tuščias operatorius ( ) ( int n ) {
dėl ( int i = 0 ; i < n; i++ )
cout << '2 gija :: callable => Funkcijos objekto naudojimas \n ;
}
} ;

tarp pagrindinis ( )
{

automatinis f = [ ] ( int n ) {
dėl ( int i = 0 ; i < n; i++ )
cout << '3 gija :: callable => Naudojant lambda išraišką \n ;
} ;

sriegis th1 ( func_thread, 2 ) ;

sriegis th2 ( siūlas_obj ( ) , 2 ) ;

sriegis th3 ( f, 2 ) ;

th1.prisijungti ( ) ;

th2.prisijungti ( ) ;

th3.prisijungti ( ) ;

grąžinti 0 ;
}

Aukščiau pateiktame kode sukūrėme tris gijas su trimis atskirais skambinti – funkcijos rodyklė, objektas ir lambda išraiška. Kiekviena gija pradedama kaip du atskiri atvejai. Trys gijos yra aktyvios vienu metu ir atskirai, kaip nurodyta išvestyje.

Išvestis

Daugiasriegio sriegio privalumai ir trūkumai

Daugiau darbų galima atlikti greičiau daugiasriegis . Taip yra todėl, kad ji leidžia daugeliui gijų vienu metu atlikti įvairias užduotis. Daugiagija leidžia programuotojams atlikti tinklo veiklą, apdoroti nuotraukas ar vaizdo įrašus ir atlikti sudėtingus skaičiavimus nesulėtinant likusios programos. Daugiagija padeda užtikrinti, kad vartotojo sąsajos būtų jautresnės. Atskiroje gijoje paleidus kodą, kuris keičia ekraną, vartotojo sąsajos gija paliekama laisvai atlikti kitas užduotis, pvz., atsakyti į vartotojo įvestį. Dėl to vartotojo sąsajos tampa sklandesnės ir greitesnės.

Tačiau yra tam tikrų naudojimo apribojimų daugiasriegis . Vienas iš pagrindinių iššūkių dirbant su daugiasriegis programos vengia lenktynių sąlygų. Lenktynių sąlyga yra situacija, kai dvi ar daugiau gijų bando pasiekti tą patį bendrinamą šaltinį tuo pačiu metu, o tai lemia nenuspėjamą elgesį. Siekdami išvengti lenktynių sąlygų, kūrėjai naudoja sinchronizavimo metodus, tokius kaip mutexai, semaforai ir barjerai.

Išvada

Daugiagija C++ yra galinga koncepcija, leidžianti kūrėjams kurti programas, kurios vienu metu gali atlikti kelias užduotis. Naudodami bibliotekos teikiamą gijų klasę, kūrėjai gali kurti, valdyti ir valdyti kelias gijas. Daugiagija gali būti naudojamas pagerinti našumą, padidinti reagavimą ir įveikti sistemos išteklių apribojimus. Tačiau dėl iššūkių dirbant su daugiasriegis programoms, kūrėjai turi būti atsargūs ir naudoti atitinkamus sinchronizavimo būdus, kad išvengtų lenktynių sąlygų.