ஒற்றை-திரிக்கப்பட்ட சி++ மல்டி-த்ரெட் ரஸ்டுடன் இடைமுகப்படுத்தினோம்
ஒற்றை-திரிக்கப்பட்ட சி++ மல்டி-த்ரெட் ரஸ்டுடன் இடைமுகப்படுத்தினோம் இடைமுகத்தின் இந்த விரிவான பகுப்பாய்வு அதன் முக்கிய கூறுகள் மற்றும் பரந்த தாக்கங்கள் பற்றிய விரிவான ஆய்வுகளை வழங்குகிறது. கவனம் செலுத்தும் முக்கிய பகுதிகள் விவாதம் மையமாக உள்ளது: கோர் மெக்...
Mewayz Team
Editorial Team
சிங்கிள்-த்ரெட் சி++ஐ மல்டி-த்ரெட்டு ரஸ்டுடன் இணைத்தோம்
ஒற்றை-திரிக்கப்பட்ட C++ குறியீட்டை மல்டி-த்ரெட் செய்யப்பட்ட ரஸ்டுடன் இடைமுகப்படுத்துவது சாத்தியமில்லை — இது முழுவதுமாக மீண்டும் எழுதப்படாமலேயே மரபு அமைப்புகளை நவீனமயமாக்குவதற்கான நடைமுறை வழிகளில் ஒன்றாகும். Mewayz இல், 138,000 பயனர்களுக்குச் சேவை செய்ய எங்கள் 207-தொகுதி வணிக OS ஐ அளவிடும் போது இந்தச் சரியான சவாலைச் சமாளித்தோம், மேலும் சிஸ்டங்களின் இயங்குநிலையைப் பற்றி நாங்கள் நினைக்கும் விதத்தை முடிவுகள் அடிப்படையில் மாற்றியது.
சிங்கிள்-த்ரெட் சி++ஐ மல்டி-த்ரெட் ரஸ்ட் மூலம் ஏன் இடைமுகப்படுத்துவீர்கள்?
பெரும்பாலான உற்பத்தி அமைப்புகள் பல ஆண்டுகளாக போரில் சோதிக்கப்பட்ட C++ குறியீட்டைக் கொண்டுள்ளன. ரஸ்டில் எல்லாவற்றையும் மீண்டும் எழுதுவது காகிதத்தில் கவர்ச்சிகரமானதாகத் தெரிகிறது, ஆனால் இது பாரிய ஆபத்து மற்றும் பல மாதங்கள் பொறியியல் நேரத்தை அறிமுகப்படுத்துகிறது. நடைமுறை அணுகுமுறை என்பது அதிகரிக்கும் தத்தெடுப்பு - ரஸ்டின் உரிமை மாதிரிக்கு ஒத்திசைவு-கடுமையான பணிச்சுமைகளை ஏற்றும் போது இருக்கும் C++ தர்க்கத்தை மூடுதல்.
எங்கள் விஷயத்தில், கோர் பிசினஸ் லாஜிக் மாட்யூல்கள் பல ஆண்டுகளாக ஒற்றை-திரிக்கப்பட்ட C++ இல் நம்பகத்தன்மையுடன் இயங்கி வருகின்றன. அவர்கள் தொடர்ச்சியான பணி செயலாக்கம், ஆவண உருவாக்கம் மற்றும் நிதி கணக்கீடுகளை கையாண்டனர். ஆனால் எங்கள் பயனர் எண்ணிக்கை 100K ஐ கடந்ததால், எங்களுக்கு இணையான தரவு செயலாக்கம், ஒரே நேரத்தில் API கையாளுதல் மற்றும் பாதுகாப்பான பகிரப்பட்ட-நிலை மேலாண்மை தேவை. ரஸ்டின் Send மற்றும் Sync பண்புக்கூறுகள், C++ ஆல் விரிவான கையேடு தணிக்கை இல்லாமல் வழங்க முடியாது என்பதற்கு தொகுக்கும் நேர ஒத்திசைவு உத்தரவாதத்தை அளித்தது.
முக்கிய உந்துதல் ஆபத்துக் குறைப்பு ஆகும். நீங்கள் வேலை செய்வதை வைத்து, எந்த அளவுகளை சேர்க்கிறீர்கள் - உங்கள் முழு கோட்பேஸை சூதாடாமல், ஒருபோதும் முடிக்க முடியாத இடம்பெயர்வு.
FFI எல்லை உண்மையில் எப்படி வேலை செய்கிறது?
C++ மற்றும் Rust இடையேயான வெளிநாட்டுச் செயல்பாடு இடைமுகம் (FFI) C-compatible function signatures மூலம் செயல்படுகிறது. ரஸ்டின் extern "C" தொகுதிகள் C++ நேரடியாக அழைக்கக்கூடிய செயல்பாடுகளை வெளிப்படுத்துகின்றன, மேலும் நேர்மாறாகவும். ரஸ்டின் மல்டி-த்ரெட் இயக்க நேரமானது ஒற்றை-திரிக்கப்பட்ட C++ குறியீட்டை பாதுகாப்பாக செயல்படுத்த வேண்டியிருக்கும் போது முக்கியமான சவால் வெளிப்படுகிறது.
பிரத்யேக கட்டமைப்பைப் பயன்படுத்தி இதைத் தீர்த்தோம்:
- த்ரெட்-கட்டுப்படுத்தப்பட்ட C++ எக்ஸிகியூட்டர்: அனைத்து C++ அழைப்புகளும் ஒரு பிரத்யேக த்ரெட் மூலம் மெசேஜ்-பாஸிங் சேனலைப் பயன்படுத்தி, ஒற்றை-த்ரெட் மாறாதது ஒருபோதும் மீறப்படாமல் இருப்பதை உறுதிசெய்கிறது.
- ரஸ்ட் அசின்க் பிரிட்ஜ் லேயர்: டோக்கியோ பணிகள் சி++ எக்ஸிகியூட்டருக்கு பணியைச் சமர்ப்பித்து, ஒன்ஷாட் சேனல்கள் மூலம்
காத்திருப்புமுடிவுகளுக்கு, ரஸ்ட் பக்கத்தை முழுமையாக ஒத்திசைவற்றதாக வைத்திருக்கிறது. - ஒளிபுகா சுட்டி மேலாண்மை: C++ பொருள்கள் Rust structs இல் மூடப்பட்டிருக்கும், அவை
Dropஐச் செயல்படுத்தி, மொழி எல்லையில் நினைவகக் கசிவைத் தடுக்கிறது. - எல்லையில் வரிசையாக்கம்: சிக்கலான தரவு கட்டமைப்புகள் FFI லேயரில் FlatBuffers க்கு வரிசைப்படுத்தப்படுகின்றன, இது பலவீனமான கட்டமைப்பு தளவமைப்பு பொருத்தத்தைத் தவிர்க்கிறது மற்றும் ஒவ்வொரு பக்கத்தின் சுயாதீனமான பரிணாமத்தை செயல்படுத்துகிறது.
- பீதி தனிமைப்படுத்தல்: ரஸ்டின்
catch_unwindஒவ்வொரு FFI நுழைவுப் புள்ளியையும் மூடுகிறது, இதனால் ஒரு பீதி மொழி எல்லையை ஒருபோதும் கடக்காது, இது வரையறுக்கப்படாத நடத்தை.
இந்த முறையானது நிரூபிக்கப்பட்ட C++ தர்க்கத்தின் நம்பகத்தன்மையுடன் மல்டி-த்ரெட் செய்யப்பட்ட ரஸ்டின் செயல்திறனை எங்களுக்கு வழங்கியது — அசல் வணிக விதிகளின் ஒரு வரியை கூட மாற்றி எழுதாமல்.
தவிர்க்க வேண்டிய மிகப் பெரிய ஆபத்துகள் யாவை?
C++ குறியீடு இல்லாதபோது அது த்ரெட்-பாதுகாப்பானது என்று கருதுவது மிகவும் ஆபத்தான தவறு. உலகளாவிய நிலை, நிலையான மாறிகள் மற்றும் மறுபதிவு செய்யாத லைப்ரரி அழைப்புகள் FFI எல்லையில் ரஸ்டின் கம்பைலரால் கண்டறிய முடியாத தரவு பந்தயங்களை ஏற்படுத்தும். ரஸ்டின் பாதுகாப்பு உத்தரவாதங்கள் பாதுகாப்பற்ற தொகுதியில் நிறுத்தப்படும் — உள்ளே இருக்கும் அனைத்தும் உங்கள் பொறுப்பு.
முக்கிய நுண்ணறிவு: ரஸ்ட் அதன் சொந்தக் குறியீட்டிற்குள் நினைவகப் பாதுகாப்பிற்கு உத்தரவாதம் அளிக்கிறது, ஆனால் நீங்கள் FFI எல்லையை C++ க்குள் கடக்கும் தருணத்தில், C++ இல் உள்ள ஒவ்வொரு நூல்-பாதுகாப்புச் சிக்கலையும் நீங்கள் பெறுவீர்கள். அந்த எல்லையைச் சுற்றியுள்ள கட்டிடக்கலை அதன் இருபுறமும் உள்ள குறியீட்டை விட முக்கியமானது.
💡 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 →
மற்றொரு பொதுவான ஆபத்து வாழ்நாள் மேலாண்மை. ரஸ்டின் கடன் சரிபார்ப்பில் C++ பொருள்கள் பங்கேற்காது. C++ ஒரு சுட்டியை வைத்திருக்கும் போது ரஸ்ட் ஒரு குறிப்பைக் கைவிட்டால், நீங்கள் பயன்படுத்த முடியாத பிழைகளைக் கண்டறிவது மிகவும் கடினம். கடுமையான உரிமைச் சொற்பொருளைச் செயல்படுத்துவதன் மூலம் இதை நாங்கள் நிவர்த்தி செய்தோம்: C++ பொருள்கள் எப்போதும் ஒரு ரஸ்ட் ரேப்பருக்குச் சொந்தமானவை, மேலும் பகிரப்பட்ட அணுகல் ரஸ்ட் பக்கத்தில் உள்ள ஆர்க் அடிப்படையிலான குறிப்பு எண்ணிக்கை மூலம் செல்கிறது.
செயல்திறன் வாரியாக, அதிகப்படியான FFI அழைப்புகள் சூழல் மாறுதல் மற்றும் வரிசையாக்கம் ஆகியவற்றிலிருந்து மேல்நிலையை உருவாக்குகின்றன. தனிப்பட்ட குறுக்கு மொழி அழைப்புகளைச் செய்வதற்குப் பதிலாக, C++ எக்ஸிகியூட்டருக்குப் பணிப் பொருட்களின் வரிசையை அனுப்புவதன் மூலம், முடிந்தவரை செயல்பாடுகளைத் தொகுக்கிறோம்.
உற்பத்தியில் இந்த அணுகுமுறை எவ்வாறு செயல்பட்டது?
எங்கள் இயங்குதளம் முழுவதும் கலப்பினக் கட்டமைப்பைப் பயன்படுத்திய பிறகு, உறுதியான மேம்பாடுகளை அளந்தோம். வரிசைமுறை C++ செயலாக்கத்தில் தடையாக இருந்த தொகுதிக்கூறுகளுக்கான கோரிக்கை செயல்திறன் 3.4x அதிகரித்துள்ளது. டெயில் லேட்டன்சி (p99) 61% குறைந்துள்ளது, ஏனெனில் ரஸ்டின் ஒத்திசைவு இயக்க நேரம் சுயாதீனமான கோரிக்கைகளை ஒரே நேரத்தில் செயல்படுத்த முடியும், அதே நேரத்தில் C++ அதன் பிரத்யேக நூலில் கணக்கீடு-கடுமையான பணிகளைக் கையாளுகிறது.
மிகவும் முக்கியமாக, உற்பத்தியின் முதல் ஆறு மாதங்களில் எங்களிடம் பூஜ்ஜிய ஒத்திசைவு தொடர்பான பிழைகள் இல்லை. த்ரெட்-ஃபைன்மென்ட் பேட்டர்ன் சி++ குறியீட்டை பல த்ரெட்களில் இருந்து அழைப்பதை கட்டமைப்புரீதியாக சாத்தியமற்றதாக்கியது, அதே சமயம் ரஸ்டின் வகை அமைப்பு அதன் எல்லையில் தரவு பந்தயங்களை தடுத்தது. ஒரே காலாண்டில் மூன்று ரேஸ்-நிலை சம்பவங்களை உருவாக்கிய மியூடெக்ஸ்கள் மூலம் C++ இல் த்ரெடிங்கைச் சேர்க்க முயற்சிக்கும் எங்களின் முந்தைய அணுகுமுறையை விட இது குறிப்பிடத்தக்க முன்னேற்றம்.
வேகமான மறு செய்கை சுழற்சிகளையும் பொறியியல் குழு தெரிவித்தது. தற்போதுள்ள C++ மாட்யூல்கள் மாற்றமின்றி தொடர்ந்து இயங்கும் போது, புதிய அம்சங்களை ரஸ்டில் முழு ஒத்திசைவு ஆதரவுடன் உருவாக்க முடியும். இந்த அதிகரிக்கும் மூலோபாயம், நாங்கள் ஒருபோதும் அதிக ஆபத்துள்ள "பிக் பேங்" இடம்பெயர்வைக் கொண்டிருக்கவில்லை - நிலையான, அளவிடக்கூடிய முன்னேற்றம்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
சிங்கிள்-த்ரெட் செய்யப்பட்ட C++ லைப்ரரிகளை மாற்றாமல் ரஸ்ட் அழைக்க முடியுமா?
ஆம், ஆனால் அந்த நூலகத்திற்கான அனைத்து அழைப்புகளும் ஒரே தொடரிழையில் இருந்து நடப்பதை உறுதிசெய்ய வேண்டும். ஒரு சேனல் மூலம் அனைத்து C++ அழைப்புகளையும் வரிசைப்படுத்தும் பிரத்யேக எக்ஸிகியூட்டர் நூலை உருவாக்குவதே நிலையான வடிவமாகும். ரஸ்டின் ஒத்திசைவு பணிகள் கோரிக்கைகளைச் சமர்ப்பித்து, மல்டி-த்ரெட் இயக்க நேரத்தைத் தடுக்காமல் பதில்களுக்காகக் காத்திருக்கின்றன. C++ குறியீட்டிற்கு எந்த மாற்றமும் தேவையில்லை - பாதுகாப்புக் கட்டுப்பாடு முற்றிலும் ரஸ்ட் பக்கத்தில் செயல்படுத்தப்படுகிறது.
பயன்பாட்டு செயல்திறனை பாதிக்கும் அளவுக்கு FFI மேல்நிலை குறிப்பிடத்தக்கதா?
தனிப்பட்ட FFI அழைப்புகள் குறைந்தபட்ச மேல்நிலையைக் கொண்டிருக்கும் - பொதுவாக ஒரு எளிய செயல்பாட்டு அழைப்பிற்கு 10 நானோ விநாடிகளுக்குள் இருக்கும். இருப்பினும், சிக்கலான தரவு கட்டமைப்புகளின் வரிசைப்படுத்தல் மற்றும் எல்லையில் உள்ள நூல் ஒத்திசைவு ஆகியவை ஆயிரக்கணக்கான நுணுக்கமான அழைப்புகளைச் செய்தால் சேர்க்கப்படும். பிளாட்பஃபர்ஸ் அல்லது கேப்'ன் ப்ரோட்டோ போன்ற பூஜ்ஜிய-நகல் வரிசைப்படுத்தல் வடிவங்களைப் பயன்படுத்துவதன் மூலம் பேட்ச் செயல்பாடுகள், அளவிலும் கூட மேல்நிலையை அலட்சியமாக வைத்திருக்கும்.
நமது C++ கோட்பேஸை இடைமுகத்திற்கு பதிலாக ரஸ்டில் மீண்டும் எழுத வேண்டுமா?
பெரும்பாலான அணிகளுக்கு, அதிகரிக்கும் இடைமுகம் பாதுகாப்பான மற்றும் வேகமான பாதையாகும். முழுவதுமாக மீண்டும் எழுதுவது, முடிவடையும் வரை பயனர் எதிர்கொள்ளும் மதிப்பு இல்லாமல் பல மாதங்கள் பொறியியல் அபாயத்தை அறிமுகப்படுத்துகிறது. இடைமுகம், மேம்பாடுகளை உடனடியாக அனுப்பவும், உற்பத்தியில் ரஸ்ட் அணுகுமுறையை சரிபார்க்கவும், மற்றும் ஒரே நேரத்தில் அதிக தாக்கத்தை வழங்கும் தொகுதிகளின் அடிப்படையில் தொகுதிகளை மாற்றவும் உங்களை அனுமதிக்கிறது. FFI எல்லையை பராமரிப்பதற்கான செலவு மீண்டும் எழுதும் செலவை விட அதிகமாக இருக்கும் தொகுதிகளை மட்டும் மீண்டும் எழுதவும்.
Mwayz இல், தொழில்நுட்ப ரீதியாகவும் செயல்பாட்டு ரீதியாகவும் - அளவீடு செய்யும் உள்கட்டமைப்பை நாங்கள் உருவாக்குகிறோம். எங்களின் 207-தொகுதி வணிக OS ஆனது 138,000 குழுக்களுக்கு $19/மாதம் தொடங்கி சிறந்த பணிப்பாய்வுகளை இயக்க உதவுகிறது. நீங்கள் ப்ராஜெக்ட்களை நிர்வகிக்கிறீர்களோ, செயல்பாடுகளை தானியங்குபடுத்துகிறீர்களோ அல்லது உங்கள் வணிகத்தை அளவிடுகிறீர்களோ, Mewayz நீங்கள் பணிபுரியும் விதத்தை மாற்றியமைக்கிறது. app.mewayz.com இல் உங்கள் இலவச சோதனையைத் தொடங்கவும் மற்றும் உங்கள் குழுவிற்கு நவீன வணிக OS என்ன செய்ய முடியும் என்பதைப் பார்க்கவும்.
We use cookies to improve your experience and analyze site traffic. Cookie Policy