Fahamka Std:Shared_mutex ka C++17
Faallo
Mewayz Team
Editorial Team
Fahamka std:: wadaag_mutex ka C++17
std::shared_mutex, oo lagu soo bandhigay C++17, waa isku xidhka asaasiga ah kaas oo u ogolaanaya dunta badan in ay isku mar qabtaan qufulo la wadaago (akhri) iyada oo la hubinayo helitaan gaar ah ee hawlgallada qorista. Waxay xallisaa mid ka mid ah caqabadaha ugu caansan ee isdhaafsiga C++ ee casriga ah iyadoo siinaysa horumariyeyaasha hab nadiif ah, hab caadi ah oo lagu hirgeliyo qufulka akhristaha iyada oo aan la gaarin maktabadaha qolo saddexaad ama APIs-gaar ah.
Waa maxay sida saxda ah std::shared_mutex iyo maxaa loogu daray C++17?
Kahor C++17, horumariyayaashii u baahnaa semantics akhristaha-qoraa waa in ay ku tiirsanaadaan xalal u gaar ah madal-ku-dhigashada sida pthread_rwlock_t ee nidaamyada POSIX ama SRWLOCK ee Windows, ama waxay isticmaali lahaayeen maktabado qolo saddexaad sida Kobcinta. Guddiga caadiga ah ee C++17 ayaa aqoonsaday faraqan waxayna ku soo bandhigeen std::shared_mutex madaxa si toos ah wax looga qabto.
std::mutex ayaa si taxane ah u nidaamiya gelitaanka oo dhan - akhriyayaa lagu daray - taas oo abuurta carqalado aan loo baahnayn. std::shared_mutex waxay kor u qaadaysaa xaddidaadda iyadoo la kala saarayo laba hab oo quful:
-
Quful la wadaago (akhri) taxane badan ayaa tan isku mar hayn kara, taasoo ka dhigaysa mid ku habboon wax akhrinta isku mar.
Quful gaar ah (qor) — lagu helay
- std :: quful la wadaago — duubo RAII ah oo wacaya
lock_Shared()dhismaha iyofur_Shared()burburinta, ka hortagaysa daadinta kheyraadka. - std :: quful gaar ah / std :: lock_guard - loo isticmaalo habka gaarka ah, hubinta in hawlgallada qorista si buuxda loo ilaaliyo oo ka reeban-ammaan.
quful(); kaliya hal dun ayaa tan mar qabsan karta, lamana ogola quful la wadaago inta la hayo.
Naqshaddan laba-habka ah ayaa ka dhigaysa std ::shared_mutex ku habboon xaaladaha sida kaydinta, diiwaannada qaabaynta, iyo qaab dhismeed kasta oo xog ah oo wax lagu akhriyo ayaa ka taliya culayska shaqada.
Sidee u isticmaashaa std::shared_mutex gudaha Koodhka Dhabta ah ee Faallooyinka?
Faallooyinka ku jira koodka isticmaala std::shared_mutex ayaa si gaar ah u qiimo badan sababta oo ah macquulnimada isdhaafsiga ayaa ah mid aad u adag in la macneeyo. Faallooyinka si fiican loo meeleeyay ayaa caddaynaya sababtala doortay nooc gaar ah oo quful ah, kaas oo si weyn u yareynaya halista mustaqbalka ilaaliyaasha inay si lama filaan ah u soo bandhigaan jinsiyadaha xogta. Waa kan qaabka caadiga ah:
#ku dar
#ku dar
#ku dar
fasalka ConfigRegistry {
std la beddeli karo :: wadaag_mutex mtx_; // waxay ilaalisaa khariidada hoose
std :: khariidad_aan la dalban xogta_;
dadweynaha:
// Dariiqa akhri: mawduucyo badan ayaa laga yaabaa inay tan si isku mid ah u wacaan
std :: string get (const std :: xadhig & furaha) const {
std :: qufulka la wadaago (mtx_); // Quful la wadaago - badbaado u ah akhrinta isla mar ah
auto it = data_.hel (furaha);
soo celi != data_.dhamaad() ? it->labaad :"";
}
// Dariiqa qor: marin gaar ah ayaa loo baahan yahay
set maran (const std :: xadhig & furaha, const std :: xadhig & val) {
std :: quful gaar ah (mtx_); // quful gaar ah - xannibay dhammaan akhristayaasha
xogta_[furaha] = val;
}
};
U fiirso sida faallooyinku u sharxaan ulajeeddada ka dambaysa doorasho kasta oo quful ah intii aad dib u soo celin lahayd waxa koodku sameeyo. Kani waa halbeegga dahabka: faallooyinka waa inay ka jawaabaan sababta, ee maaha maxay. Erayga muhiimka ah ee mutable ee ku yaal mutex wuxuu ogolaanayaa hel() in lagu dhawaaqo const iyadoo wali la awoodo in la xiro, qaab caadi ah oo sarbeeb ah.
Aragtida Furaha: Had iyo jeer isticmaal xirmooyinka qufulka ee RAII (
std :: wadaag_quful,std ::quful_gaar ah) watastd ::shared_mutex— waligaa ha wicinquful()iyofure ()gacanta. Gacan ku qufulka iyadoo ay jiraan waxyaabo ka reeban waa waddo dammaanad ah oo loo maro qufulo iyo dabeecad aan la qeexin.
Waa maxay dhibaatooyinka caadiga ah marka lala shaqaynayo std::shared_mutex?
Xitaa iyada oo leh faallooyin cad iyo ujeeddooyin wanaagsan, std::shared_mutex waxay leedahay dabinno khiyaano ah oo burburiya horumariyeyaasha khibradda leh. Khatarta ugu badan waacusbooneysii quful: ma jirto qaab dhismeed oo lagu cusboonaysiiyo quful la wadaago oo loo sameeyo quful gaar ah iyada oo aan marka hore la sii deyn. Isku dayga in la sameeyo iyada oo aan la sii deyn waxay abuurtaa xannibaad degdeg ah sababtoo ah duntu waxay haysaa quful la wadaago iyada oo la sugayo qufulka gaarka ah ee aan waligiis la siin karin ilaa inta quful la wadaago uu jiro - oo uu ku jiro midka uu hayo.
💡 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 →Waxqabadku sidoo kale wuu ku yaabin karaa Nidaamyada aadka loogu loolamayo ee leh qoraayaal badan, std ::shared_mutex waxa laga yaabaa inay dhab ahaantii u qabato si ka xun std :: mutex cad oo ay ugu wacan tahay xisaab-ururinta dheeraadka ah. Had iyo jeer astaanta ka hor inta aanad u qaadan in qufulka akhristaha-qoraa yahay guul saafi ah.
Sidee std :: wadaaga_mutex barbardhiga std ::mutex iyo Beddelka Kale?
std::mutex wuu ka fudud yahay, si dhakhso leh loo helo marka muranku hooseeyo, wuxuuna ku habboon yahay marka wax la akhriyo ama la qoro waxay ku dhacaan qiyaas ahaan is le'eg. std::shared_mutex ayaa iftiimaya marka la akhriyo si aad ah tiro ka badan ayaa qorta - 10: 1 ama saamiga ka sarreeya waa xeer macquul ah oo suul ah ka hor inta aan la tixgelin wareejinta.
C++14 wuxuu soo bandhigay std::shared_timed_mutex, kaas oo ku dara try_lock_shared_for () iyo try_lock_shared_ilaa () isku dayada waqtiyeysan. C++17's std::shared_mutex waxay hoos u dhigtaa kala duwanaanshaha waqtiga loogu talagalay hirgelinta jilicsan. Haddii aad u baahan tahay wakhti wakhti ku xidhid jidka la wadaago, std ::shared_timed_mutex ayaa weli ah mid la heli karo oo labada noocba waa kuwo heer buuxa ah.
std :: atomic oo ay weheliso si taxadar leh u dalbashada xusuusta mararka qaarkood waxay bedeli kartaa mutex gebi ahaan calannada fudud ama xisaabaadka, laakiin qaab-dhismeedka xogta adag, std::shared_mutex ayaa weli ah xalka ugu akhriska iyo joogteynta badan ee maktabadda caadiga ah.
Su'aalaha Inta badan La Isweydiiyo
Std ::shared_mutex ma keeni kartaa gaajo?
Haa, way awoodaa. Haddii kuwa cusub ee qufulka la wadaago ay si joogto ah u imaanayaan, codsade quful gaar ah ayaa laga yaabaa inuu sugo ilaa aan xad lahayn - dhibaato qoraa gaajo caadi ah. Heerarka C++ ma farayo siyaasad cadaalad ah oo gaar ah, markaa habdhaqanku waxay ku xidhan tahay fulinta. Ficil ahaan, inta badan hirgelinta maktabadaha caadiga ah waxay mudnaan siiyaan quful gaar ah oo sugaya marka safka la galo, laakiin waa inaad tan u xaqiijisaa silsiladdaada gaarka ah iyo madal haddii gaajo ay walaac ka qabto wax soo saarka.
Std::shared_mutex badbaado ma u tahay in lagu isticmaalo std :: xaalad_kala duwanaansho?
std::condition_variable waxay u baahantahay std :: gaar_lock, markaa si toos ah ulama socon std::shared_mutex. Haddii aad u baahan tahay inaad shuruud ku sugto markaad haysato mutex la wadaago, adeegso std::condition_variable_ any, kaas oo la shaqeeya nooc kasta oo BasicLockable ah, oo ay ku jiraan std::shared_mutex oo lagu lamaaniyay std::Share_lock.
Miyaan ku daraa faallooyinka mar kasta oo aan isticmaalo std::shared_mutex?
Ugu yaraan, faallo ka bixi ku dhawaaqida mutex-ka si aad u qeexdo waxa xogta ay ilaaliso iyo isbeddellada ay hayso. Goob kasta oo quful ah, faallo kooban oo sharraxaysa sababta la wadaago iyo gelitaanka gaarka ah ee loo doortay waxay ku kordhinaysaa qiime muhiim ah dib-u-eegayaasha koodka iyo ilaalinta mustaqbalka. Kutaannada isdhaafsiga ayaa ka mid ah kuwa ugu adag in la soo saaro oo la hagaajiyo, markaa maalgashiga si cad, faallooyin sax ah ayaa bixiya faa'iidooyin badan marar badan.
Maareynta nidaamyada adag - ha ahaato C++ code ama hawlgal ganacsi oo dhan - waxay u baahan tahay qalab sax ah iyo qaabdhismeed cad. Mewayzwaa 207-module-ganacsi OS ah oo ay ku kalsoon yihiin in ka badan 138,000 isticmaalayaasha si ay u keenaan caddayn isku mid ah suuq-geynta, CRM, e-commerce, falanqaynta, iyo in ka badan, dhammaan hal madal oo ka bilaabmaya kaliya $19 bishii. Jooji jug-juglayn daraasiin qalab ah oo go'ay oo billow ganacsigaaga adiga oo si sax ah u qaabaysan software. isku day Mewayz maanta app.mewayz.com oo arag sida nidaam midaysan uu u badalo habka ay kooxdaadu u shaqeyso.
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
How I write software with LLMs
Mar 16, 2026
Hacker News
The Linux Programming Interface as a university course text
Mar 15, 2026
Hacker News
Canada's bill C-22 mandates mass metadata surveillance
Mar 15, 2026
Hacker News
LLMs can be exhausting
Mar 15, 2026
Hacker News
The 49MB web page
Mar 15, 2026
Hacker News
Chrome DevTools MCP (2025)
Mar 15, 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