Gusobanukirwa Std: Basangiye_mutex kuva C ++ 17
Ibitekerezo
Mewayz Team
Editorial Team
Gusobanukirwa std :: gusangira_mutex kuva C ++ 17
Niki Mubyukuri Std :: isangiwe_mutex kandi Kuki Yongewe muri C ++ 17?
> Komite isanzwe ya C ++ 17 yamenye iki cyuho maze itangiza std :: shared_mutex mumutwe wa kugirango ubikemure neza.
Igitekerezo cyibanze kiroroshye: muri gahunda nyinshi zisi-nyayo, amakuru asomwa cyane kuruta uko yanditse. Bisanzwe std :: mutex ikurikirana ibyinjira byose - isoma irimo - ikora inzitizi zidakenewe. std :: gusangira_mutex ikuraho iyo mbogamizi mugutandukanya uburyo bubiri bwo gufunga:
- Gusangira (soma) gufunga - wabonye ukoresheje
gufunga_gusangira (); insanganyamatsiko nyinshi zirashobora gufata icyarimwe, bigatuma biba byiza gusoma hamwe. - Gufunga bidasanzwe (kwandika) gufunga - wabonye ukoresheje
gufunga (); umugozi umwe gusa urashobora gufata ibi icyarimwe, kandi nta gufunga gusangiwe byemewe mugihe bifashwe.
strong>
strong>
Ubu buryo bubiri bwuburyo butuma std :: isangira_mutex isanzwe ikwiranye na ssenariyo nka cashe, iyandikwa ryiboneza, hamwe namakuru yose aho usoma yiganjemo akazi.
Nigute Ukoresha std :: gusangira_mutex muri Kode nyayo hamwe n'ibitekerezo?
Ibitekerezo muri kode ikoresha std :: gusangira_mutex bifite agaciro cyane kuko logique ihuriweho irazwi cyane kubitekerezaho. Ibitekerezo byashyizwe neza birasobanura impamvu ubwoko bwihariye bwo gufunga bwatoranijwe, bugabanya cyane ibyago byabashinzwe kubungabunga ejo hazaza batangiza amarushanwa yamakuru. Dore uburyo busanzwe:
#shyiramo
#shyiramo
#shyiramo
icyiciro ConfigRegistry {
ihinduka std :: gusangira_mutex mtx_; // irinda ikarita hepfo
std :: idafite gahunda_map data_;
rusange:
// Soma inzira: insanganyamatsiko nyinshi zishobora guhamagara icyarimwe
std :: umugozi kubona (const std :: umugozi & urufunguzo) const {
std :: gusangira_ gufunga (mtx_); // gusangira gufunga - umutekano kubisomwa hamwe
auto it = data_.ishakisha (urufunguzo);
subiza! = data_.end ()? ni-> kabiri: "";
}
// Andika inzira: kwinjira byihariye bisabwa
Gushiraho ubusa (const std :: umugozi & urufunguzo, const std :: umugozi & val) {
std :: gufunga bidasanzwe (mtx_); // gufunga byihariye - guhagarika abasomyi bose
data_ [urufunguzo] = val;
}
};
Reba uburyo ibisobanuro bisobanura intego inyuma ya buri guhitamo gufunga aho gusubiramo gusa kode ikora. Nibipimo bya zahabu: ibitekerezo bigomba gusubiza kuki , ntabwo iki . Ijambo ryibanze ihinduka ijambo ryibanze kuri mutex ryemerera kubona () gutangazwa const mugihe ukibasha gufunga, uburyo busanzwe kandi budasanzwe.
Ubushishozi Bwingenzi: Buri gihe ukoreshe ibipfunyika bya RAII (
std :: gusangira_ gufunga, Gufunga intoki imbere yibidasanzwe ni inzira yemejwe kugeza igihe ntarengwa n'imyitwarire idasobanutse.
Ni izihe mitego isanzwe iyo ukorana na std :: basangiye_mutex?
Ndetse nibitekerezo bisobanutse nintego nziza, std :: gusangira_mutex ifite imitego yoroheje izenguruka abitezimbere babimenyereye. Akaga gakomeye cyane ni kuzamura gufunga : ntaburyo bwubatswe bwo kuzamura igifunga gisangiwe kumugozi wihariye utabanje kurekura mbere. Kugerageza kubikora utarinze kurekura bitera guhita bifunga kuko urudodo rufite igifunga gisangiwe mugihe utegereje gufunga byihariye bidashobora na rimwe gutangwa mugihe cyose gufunga gusangiye kubaho - harimo nuwo ufashe.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →Irindi kosa risanzwe ni ukurinda granulaire itari yo. Abashinzwe iterambere rimwe na rimwe bafunga cyane, batsinze intego yuburyo bwabasomyi-banditsi, cyangwa cyane, bagasiga Windows aho invariants zirengerwa hagati yuburyo bubiri butandukanye. Ibitekerezo bisobanura invariant irinzwe , aho guhinduka gusa gufunga, fasha amakipe gutekereza kubikosora mugihe cyo gusuzuma code.
Imikorere irashobora kandi kugutangaza. Kuri sisitemu zirwanira cyane hamwe nabanditsi benshi, std :: shared_mutex irashobora rwose gukora nabi kurenza std :: mutex kubera kubika ibitabo hejuru. Buri gihe umwirondoro mbere yo gufata umusomyi-umwanditsi gufunga ni net net.
Nigute std :: isangiwe_mutex igereranya na std :: mutex nubundi buryo?
std :: mutex biroroshye, byihuse kubona mugihe amakimbirane ari make, kandi birakwiriye iyo gusoma no kwandika bibaye inshuro zingana. std :: gusangira_mutex irabagirana iyo usomye cyane umubare wanditse - igipimo cya 10: 1 cyangwa kirenga ni itegeko ryumvikana mbere yo gusuzuma icyerekezo.
std :: gusangira_mutex ita igihe cyateganijwe kugirango ishyirwe mubikorwa. Niba ukeneye gufunga igihe munzira isangiwe, std :: gusangira_timed_mutex igumaho kandi ubwoko bwombi burasanzwe.
"
Ibibazo bikunze kubazwa
Ese std :: gusangira_mutex bitera inzara?
Yego, birashoboka. Niba abafatanyabikorwa bashya-bafunze bakomeza kuhagera, uwasabye-gufunga wenyine arashobora gutegereza igihe kitarambiranye - ikibazo cya umwanditsi w'inzara ikibazo. Igipimo cya C ++ ntabwo gitegeka politiki yuburinganire bwihariye, imyitwarire rero iterwa nishyirwa mubikorwa. Mubimenyerezo, ibyinshi mubisomero byashyizwe mubikorwa bishyira imbere gutegereza gufunga byihariye bimaze gutonda umurongo, ariko ugomba kugenzura ibi kubikoresho byawe byihariye hamwe na platform niba inzara ihangayikishije umusaruro.
Ese std :: isangiwe_mutex ifite umutekano gukoresha hamwe na std :: imiterere_bishobora?
std :: condition_variable bisaba std :: idasanzwe_fungura , ntabwo rero ihuye neza na std :: gusangira_mutex . Niba ukeneye gutegereza kumiterere mugihe ufashe mutex isangiwe, koresha std :: condition_variable_any , ikorana nubwoko ubwo aribwo bwose bwibanze, harimo std :: shared_mutex ihujwe na std :: gusangira_ gufunga .
Nakagombye kongeramo ibitekerezo burigihe nkoresheje std :: gusangira_mutex?
Nibura, tanga itangazo rya mutex kugirango usobanure amakuru arinda na invariants ikomeza. Kuri buri rubuga rwo gufunga, igitekerezo kigufi gisobanura impamvu gusangirwa hamwe no kwinjira byihariye byatoranijwe byongera agaciro gakomeye kubasuzuma kode hamwe nabazakomeza. Amakosa ahuriweho arimwe mubigoye kubyara no gukosora, bityo igishoro mubitekerezo bisobanutse neza, byishyura inyungu inshuro nyinshi.
Gucunga sisitemu igoye - yaba code ya C ++ ihuriweho cyangwa ibikorwa byubucuruzi byose - bisaba ibikoresho byiza nuburyo busobanutse. Mewayz ni 207-module yubucuruzi OS yizewe nabakoresha barenga 138.000 kugirango bazane ibyo bisobanuro mubucuruzi, CRM, e-ubucuruzi, gusesengura, nibindi, byose murubuga rumwe guhera kumadorari 19 kumwezi. Hagarika guhuza ibikoresho byinshi byaciwe hanyuma utangire ukore ubucuruzi bwawe hamwe na software yateguwe neza. Gerageza Mewayz uyumunsi kuri app.mewayz.com urebe uburyo sisitemu ihuriweho ihindura uburyo ikipe yawe ikora.
We use cookies to improve your experience and analyze site traffic. Cookie Policy