Ku twisisa Std:Shared_mutex ku suka eka C++17
Mavonelo
Mewayz Team
Editorial Team
Ku twisisa std::shared_mutex ku suka eka C++17
std::shared_mutex, leyi nghenisiweke eka C++17, i primitive ya ku fambisana leyi pfumelelaka tithreyidi to tala ku khoma swilotlelo leswi avelaniwa (ku hlaya) hi nkarhi wun’we loko ku ri karhi ku tiyisisiwa mfikelelo wo hlawuleka eka matirhelo yo tsala. Yi tlhantlha yin’wana ya mintlhontlho leyi tolovelekeke swinene ya nkarhi wun’we eka C++ ya manguva lawa hi ku nyika vaendli ndlela yo basa, ya ntolovelo yo tirhisa ku pfala ka muhlayi-mutsari handle ko fikelela tilayiburari ta vanhu va vunharhu kumbe ti-API leti kongomeke eka pulatifomo.
Kahle-kahle I Yini std::shared_mutex naswona Ha Yini Yi Engeteriwile Eka C++17?
Emahlweni ka C++17, vaendli lava a va lava semantiki ya muhlayi-mutsari a va fanele ku titshega hi swintshuxo leswi kongomeke swa pulatifomo ku fana na pthread_rwlock_t eka tisisiteme ta POSIX kumbe SRWLOCK eka Windows, kutani a va ta tirhisa tilayiburari ta vanhu va vunharhu to fana na Boost. Komiti ya ntolovelo ya C++17 yi xiye xivandla lexi naswona yi nghenise std::shared_mutex eka nhlokomhaka ya ku xi lulamisa hi ku kongoma.
Miehleketo ya nkoka yi kongomile: eka minongonoko yo tala ya xiviri, datha yi hlayiwa ngopfu ku tlula leswi yi tsariweke. Xiyimo xa std::mutex xi serialize mfikelelo hinkwawo — ku hlaya ku katsiwile — leswi tumbuluxaka swiphiqo leswi nga lavekiki. std::shared_mutex yi tlakusa xipimelo xexo hi ku hambanyisa exikarhi ka tindlela timbirhi to pfala:
- Xilotlelo lexi avelaniwa (ku hlaya) — xi kumiwile hi ku tirhisa
lock_shared(); tintambhu to tala ti nga khoma leswi hi nkarhi wun’we, leswi endlaka leswaku swi va leswinene eka ku hlaya hi nkarhi wun’we. - Xilotlelo xo hlawuleka (ku tsala) — xi kumiwile hi ku tirhisa
lock(); i thyaka rin’we ntsena leri nga khomaka leswi hi nkarhi wun’we, naswona ku hava swilotlelo leswi avelaniwa leswi pfumeleriwaka loko swi khomiwile. - std::shared_lock — xifunengeto xa RAII lexi vitanaka
lock_shared()eka ku aka naunlock_shared()eka ku onhiwa, ku sivela ku vupfa ka switirhisiwa. - std::unique_lock / std::lock_guard — yi tirhisiwa na movha wo hlawuleka, ku tiyisisa leswaku matirhelo yo tsala ya sirhelelekile hi ku hetiseka naswona ya hlayisekile eka xihlawuhlawu.
Dizayini leyi ya tindlela timbirhi yi endla leswaku std::shared_mutex yi va leyi faneleke ya ntumbuluko eka swiyimo swo fana na tikhexe, tirhejisitara ta vuhlanganisi, na xivumbeko xihi kumbe xihi xa datha laha ku hlaya ku lawulaka ntirho.
U Tirhisa Njhani std::shared_mutex eka Khodi ya Xiviri Na Mavonelo?
Mavonelo eka khodi leyi tirhisaka std::shared_mutex i ya nkoka swinene hikuva loji ya nkarhi wun’we yi dume hi ku tika ku anakanyisisa ha yona. Mavonelo lama vekiweke kahle ya hlamusela ha yini muxaka wo karhi wa xilotlelo wu hlawuriwile, leswi hungutaka swinene khombo ra vahlayisi va nkarhi lowu taka ku nghenisa mimphikizano ya data hi xihoxo. Hi lexi xivumbeko lexi tolovelekeke:
#katsa
#katsa
#katsa na
class Vuhlayiseki bya Vukorhokeri { .
std leyi cinca-cincaka::mutex_yo avelaniwa mtx_; // yi sirhelela mepe lowu nga laha hansi
std::mepe_lowu nga hlelekangiki data_;
mani na mani: .
// Ndlela yo hlaya: ti thread to tala ti nga ha vitana leswi hi nkarhi wun'we
std::string get (const std::ntambhu& xilotlelo) const {
std::xilotlelo xa_xilotlelo lexi avelaniwa (mtx_); // shared lock — yi hlayisekile eka ku hlaya ka nkarhi wun’we
auto it = data_.ku kuma (xilotlelo);
yi vuyisa != data_.end () ? it->xa vumbirhi : "";
} .
// Ndlela yo tsala: mfikelelo wo hlawuleka wa laveka
void set (const std::ntambhu& xilotlelo, const std::ntambhu& val) {
std::xilotlelo_xa_xilotlelo xo hlawuleka (mtx_); // exclusive lock — yi sivela vahlayi hinkwavo
data_[xilotlelo] = val;
} .
};
Xiya ndlela leyi mavonelo ma hlamuselaka xikongomelo endzhaku ka ku hlawula kun'wana na kun'wana ka xilotlelo ku tlula ku tlhela u vula ntsena leswi khodi yi swi endlaka. Lexi i mpimanyeto wa nsuku: mavonelo ya fanele ku hlamula ha yini, ku nga ri what. Rito ra nkoka ra mutable eka mutex ri pfumelela get() ku tivisiwa const loko ya ha kota ku khiya, xivumbeko lexi tolovelekeke na xa xivulavulelo.
Vutivi bya Nkoka: Minkarhi hinkwayo tirhisa swifunengeto swa xilotlelo xa RAII (std::shared_lock, std::unique_lock) na std::shared_mutex — u nga tshuki u vitana lock() na unlock() hi voko. Ku pfala hi voko eka vukona bya swihlawulekisi i ndlela leyi tiyisisiweke eka ku tsandzeka na mahanyelo lama nga hlamuseriwangiki.
Hi yihi Mintlhamu leyi Tolovelekeke Loko U Tirha Na std::shared_mutex?
Hambi ku ri na mavonelo lama nga erivaleni na swikongomelo leswinene, std::shared_mutex yi na mintlhamu leyi nga vonakiki leyi khunguvanyisaka vaendli va ntokoto. Lexi nga na khombo swinene i ku ndlandlamuxa xilotlelo: a ku na ndlela leyi akiweke yo ndlandlamuxa xilotlelo lexi avelaniwa ku ya eka xilotlelo xo hlawuleka handle ko xi ntshunxa ku sungula. Ku ringeta ku endla tano handle ko ntshunxa swi endla leswaku ku va na ku pfaleka ka xihatla hikuva thread yi khoma xilotlelo lexi avelaniwa loko yi rindzele xilotlelo xo hlawuleka lexi nga ta ka xi nga nyikiwi loko ntsena xilotlelo xihi na xihi lexi avelaniwa xi ri kona — ku katsa na lexi yi xi khomeke.
💡 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 →Xihoxo xin'wana lexi tolovelekeke i ku sirhelela granularity leyi hoxeke. Minkarhi yin’wana vaendli va swilo va khiya hi ku anama ngopfu, va hlula xikongomelo xa xivumbeko xa muhlayi-mutsari, kumbe hi ku koma ngopfu, va siya mafasitere laha ku tluriwaka swilo leswi nga cinciki exikarhi ka ku kumiwa ka swilo swimbirhi leswi hambaneke. Mavonelo lama hlamuselaka invariant being protected, ku nga ri ntsena variable leyi lotleriwaka, yi pfuna swipano ku anakanyisisa hi ku lulama hi nkarhi wa ku kamberiwa ka khodi.
Matirhelo na wona ya nga ku hlamarisa. Eka tisisiteme leti kanetanaka swinene leti nga na vatsari vo tala, std::shared_mutex entiyisweni yi nga ha tirha ku biha ku tlula std::mutex yo olova hikwalaho ka mali yo engetela ya vuhlayisi bya tibuku. Minkarhi hinkwayo phurofayili u nga si ehleketa leswaku ku pfala ka muhlayi-mutsari i ku hlula ka nete.
Xana std::shared_mutex Yi Fanisa Njhani na std::mutex na Swihlawulekisi Swin’wana?
std::mutex yi olovile, ya hatlisa ku yi kuma loko ku kanetana ku ri ehansi, naswona yi fanerile loko ku hlaya na ku tsala ku humelela hi nhlayo leyi ringanaka hi xiringaniso. std::shared_mutex yi voninga loko ku hlaya ku tlula swinene ku tsala — mpimo wa 10:1 kumbe ku tlula i nawu lowu twalaka wa xihatla u nga si languta ku cinca.
C++14 yi nghenise std::shared_timed_mutex, leyi engetelaka try_lock_shared_for() na try_lock_shared_until() eka matshalatshala lama vekiweke nkarhi. std::shared_mutex ya C++17 yi hoxa swihlawulekisi leswi vekiweke nkarhi eka ku tirhisiwa loku olovaka. Loko u lava ku pfala loku vekiweke nkarhi eka ndlela leyi avelaniwa, std::shared_timed_mutex yi tshama yi ri kona naswona tinxaka leti hatimbirhi ti tolovelekile hi ku helela.
Eka swin’wana leswi nga riki na swilotlelo, std::atomic leyi hlanganisiweke na ku odara ka memori hi vukheta minkarhi yin’wana yi nga siva mutex hi ku helela eka mimfungho yo olova kumbe swibalo, kambe eka swivumbeko swa datha leswi rharhanganeke, std::shared_mutex yi tshama yi ri xitshunxo lexi hlayekaka no hlayisiwa swinene eka layiburari ya ntolovelo.
Swivutiso Leswi Vutisiwaka Nkarhi Na Nkarhi
Xana std::shared_mutex yi nga vanga ndlala?
Ina, swi nga endleka. Loko vakhomi lavantshwa va swilotlelo leswi avelaniwa va tshama va ri karhi va fika va ya emahlweni, mukomberi wa xilotlelo xo hlawuleka a nga ha rindza hilaha ku nga heriki — xiphiqo xa xikhale xa ndlala ya mutsari. Mpimo wa C++ a wu lerisi pholisi yo karhi ya ku lulama, hikwalaho mahanyelo ya titshege hi ku tirhisiwa. Hi ku tirhisa, ku tirhisiwa ko tala ka layiburari ya ntolovelo ku rhangisa swilotlelo swo hlawuleka leswi yimeleke loko swi fole layini, kambe u fanele ku tiyisisa leswi eka xitirhisiwa xa wena xo karhi na pulatifomo loko ndlala yi ri xiphiqo eka vuhumelerisi.
Xana std::shared_mutex yi hlayisekile ku yi tirhisa na std::condition_variable?
std::condition_variable yi lava std::unique_lock, hikwalaho a yi fambisani hi ku kongoma na std::shared_mutex. Loko u lava ku rindza eka xiyimo loko u khome mutex leyi avelaniwa, tirhisa std::condition_variable_any, leyi tirhaka na muxaka wihi na wihi wa BasicLockable, ku katsa na std::shared_mutex leyi hlanganisiweke na std::shared_lock.
Xana ndzi fanele ku engetela mavonelo nkarhi wun'wana na wun'wana loko ndzi tirhisa std::shared_mutex?
Eka xiyimo xa le hansi, commenta xitiviso xa mutex ku hlamusela leswaku i data yihi leyi yi yi sirhelelaka na ti invariants leti yi ti hlayisaka. Eka ndhawu yin’wana na yin’wana yo pfala, nhlamuselo yo koma leyi hlamuselaka leswaku hikokwalaho ka yini mfikelelo lowu avelaniwa ku hambana na ku hlawuleka wu hlawuriwile yi engetela nkoka lowukulu eka vahlahluvi va khodi na vahlayisi va nkarhi lowu taka. Swihoxo swa nkarhi wun’we i swin’wana swa leswi swi nonohaka ku swi humesa na ku swi lulamisa, hikwalaho vuvekisi eka mavonelo lama nga erivaleni, lama kongomeke swi hakela tidivhideni minkarhi yo tala.
Ku lawula tisisiteme to rharhangana — hambi khodi ya C++ ya nkarhi wun’we kumbe matirhelo hinkwawo ya bindzu — swi lava switirhisiwa leswi faneleke na xivumbeko lexi nga erivaleni. Mewayz i OS ya bindzu ya timodyuli ta 207 leyi tshembiwaka hi vatirhisi vo tlula 138,000 ku tisa ku vonakala koloko loku fanaka eka vuxavisi, CRM, e-commerce, vuxopaxopi, na swin’wana, hinkwaswo eka pulatifomo yin’we ku sukela eka $19 ntsena hi n’hweti. Tshika ku juggling makume ya switirhisiwa leswi nga hlanganisiwangiki ivi u sungula ku fambisa bindzu ra wena hi ku kongoma ka software leyi endliweke kahle. Ringeta Mewayz namuntlha eka app.mewayz.com u vona ndlela leyi sisiteme leyi hlanganeke yi hundzulaka ndlela leyi xipano xa wena xi tirhaka ha yona.
Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
Start managing your business smarter today
Join 30,000+ businesses. Free forever plan · No credit card required.
Ready to put this into practice?
Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.
Start Free Trial →Related articles
Hacker News
POSSE – Publish on your Own Site, Syndicate Elsewhere
Mar 23, 2026
Hacker News
Show HN: The King Wen Permutation: [52, 10, 2]
Mar 23, 2026
Hacker News
White-Collar AI Apocalypse Narrative Is Just Another Bullshit
Mar 23, 2026
Hacker News
Plane and ground vehicle collide at New York's LaGuardia airport halting flights
Mar 23, 2026
Hacker News
AI Proteomics Competition 2026 – $13K Prize, Internships and Compute Support
Mar 23, 2026
Hacker News
GoGoGrandparent (YC S16) is hiring Back end Engineers
Mar 23, 2026
Ready to take action?
Start your free Mewayz trial today
All-in-one business platform. No credit card required.
Start Free →14-day free trial · No credit card · Cancel anytime