Hacker News

موږ د څو-تیریډ شوي زنګ سره یو واحد تار شوی C++ انٹرفیس کړو

موږ د څو-تیریډ شوي زنګ سره یو واحد تار شوی C++ انٹرفیس کړو د انٹرفیس دا هراړخیز تحلیل د دې اصلي اجزاو او پراخو اغیزو تفصيلي ازموینه وړاندې کوي. د تمرکز کلیدي ساحې د بحث مرکزونه: اصلي ماشین ...

1 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
دلته د SEO بشپړ بلاګ پوسټ دی:

موږ د څو-تریډ شوي زنګون سره یو واحد تاریډ C++ انٹرفیس کړو

د څو-تریډ شوي زنګ سره د واحد-تریډ شوي C++ کوډ مداخله نه یوازې ممکنه ده - دا د بشپړ بیا لیکلو پرته د میراث سیسټمونو عصري کولو لپاره یوه له خورا عملي لارو څخه ده. په Mewayz کې، موږ د 207 ماډل سوداګرۍ OS اندازه کولو په وخت کې د 138,000 کاروونکو خدمت کولو لپاره دا سمه ننګونه حل کړه، او پایلې یې په بنسټیز ډول بدلې کړې چې موږ څنګه د سیسټمونو د مداخلې په اړه فکر کوو.

ولې تاسو به د څو-تریډ شوي زنګ سره د واحد-تریډ شوي C++ انٹرفیس وکړئ؟

ډیری تولیدی سیسټمونه د کلونو جنګی ازمویل شوی C++ کوډ لری. په زنګ کې د هرڅه بیا لیکل په کاغذ کې زړه راښکونکي ښکاري ، مګر دا لوی خطر او د میاشتو انجینرۍ وخت معرفي کوي. عملي طریقه د مخ په زیاتیدونکي اختیار کول دي - د موجوده C++ منطق لپاسه پداسې حال کې چې د راسټ مالکیت ماډل ته د کار بار بار بار بار کوي.

زموږ په قضیه کې، د اصلي سوداګرۍ منطق ماډلونه د کلونو لپاره په واحد-تریډ شوي C++ کې د اعتبار سره روان وو. دوی په ترتیب سره د کار پروسس کول، د اسنادو تولید، او مالي حسابونه اداره کول. مګر لکه څنګه چې زموږ د کاروونکي اساس د 100K څخه تیر شو، موږ موازي ډیټا پروسس کولو، د ورته API اداره کولو، او خوندي شریک ریاست مدیریت ته اړتیا درلوده. د زنګ لیږل او Sync ځانګړتیاو موږ ته د تالیف وخت د موافقت تضمین راکوي چې C++ په ساده ډول د پراخ لاسي پلټنې پرته وړاندیز نشي کولی.

کلیدي انګیزه د خطر کمول دي. تاسو هغه څه وساتئ چې کار کوي، او تاسو کوم پیمانه اضافه کړئ - پرته له دې چې ستاسو ټول کوډبیس په مهاجرت کې قمار وکړئ چې ممکن هیڅکله پای ته ونه رسیږي.

د FFI سرحد په حقیقت کې څنګه کار کوي؟

د C++ او Rust تر منځ د بهرنۍ فنکشن انٹرفیس (FFI) د C-compatible فنکشن لاسلیکونو له لارې کار کوي. د زنګ د بهرنۍ "C" بلاکونه هغه افعال افشا کوي چې C++ کولی شي مستقیم زنګ ووهي، او برعکس. جدي ننګونه هغه وخت راڅرګندیږي کله چې د زنګ څو-تریډ شوي رن ټایم اړتیا لري چې په خوندي ډول د واحد تار شوي C++ کوډ غوښتنه وکړي.

موږ دا د وقف شوي جوړښت په کارولو سره حل کړه:

  • د تریډ محدود C++ اجرا کوونکی: ټول C++ زنګونه د پیغام لیږدونکي چینل په کارولو سره د واحد ځانګړي تار له لارې تیریږي، دا ډاډه کوي چې د واحد تار شوي انویرینټ هیڅکله سرغړونه نه کیږي.
  • Rust async برج پرت: د توکیو دندې د C++ اجرا کونکي ته کار وړاندې کوي او د یو شاټ چینلونو له لارې پایلې انتظار کوي، د زنګ اړخ په بشپړه توګه غیر متمرکز ساتي.
  • د مبهم پوائنټر مدیریت: C++ څیزونه په Rust structs کې پوښل شوي دي چې Drop د تعییناتي پاکولو لپاره پلي کوي، د ژبې په اوږدو کې د حافظې لیک مخه نیسي.
  • په سرحد کې سیریل کول: د ډیټا پیچلي جوړښتونه په FFI پرت کې فلیټ بفرونو ته سیریل شوي دي، د نازک جوړښت ترتیب سره سمون څخه مخنیوی کوي او د هر اړخ خپلواکه تکامل فعالوي.
  • د وېرې انزوا: د زنګون catch_unwind د FFI د ننوتلو هر نقطه پوښي ترڅو ویره هیڅکله د ژبې حد نه تیریږي، کوم چې غیر تعریف شوی چلند وي.

دې نمونې موږ ته د ثابت C++ منطق د اعتبار سره د څو-تریډ شوي زنګ وهلو وسیله راکړه - پرته له دې چې د اصلي سوداګرۍ قواعدو یوه کرښه بیا لیکل.

د مخنیوي لپاره ترټولو لوی زیانونه څه دي؟

تر ټولو خطرناکه تېروتنه دا ده چې د C++ کوډ د تار څخه خوندي وي کله چې دا نه وي. نړیوال حالت، جامد متغیرات، او غیر بیرته راستنیدونکي کتابتون زنګونه به د ډیټا ریسونو لامل شي چې د زنګ کمپیلر نشي کولی د FFI حد کې کشف کړي. د زنګ خوندیتوب تضمین په ناامنه بلاک کې ودریږي — دننه هرڅه ستاسو مسؤلیت دی.

کلیدي بصیرت: زنګ په خپل کوډ کې د حافظې خوندیتوب تضمینوي، مګر کله چې تاسو C++ ته د FFI حدود تیر کړئ، تاسو د هر تار خوندیتوب ستونزه په میراث کې لرئ چې 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++ اجرا کونکي ته د کاري توکو قطار لیږو.

دا طریقه په تولید کې څنګه کار کوي؟

زموږ په پلیټ فارم کې د هایبرډ جوړښت له مینځه وړلو وروسته، موږ د کانکریټ پرمختګونه اندازه کړل. د غوښتنې له لارې د ماډلونو لپاره 3.4x زیات شوی چې مخکې یې په ترتیبي C++ پروسس کې خنډ و. د Tail lateency (p99) %61 راټیټ شوی ځکه چې د Rust async رن ټایم کولی شي په ورته وخت کې خپلواکې غوښتنې پروسس کړي پداسې حال کې چې C++ په خپل وقف شوي تار کې د محاسبې درانه دندې اداره کوي.

تر ټولو مهم، موږ د تولید په لومړیو شپږو میاشتو کې د صفر په اتفاق پورې اړوند بګونه درلودل. د تار د محدودیت نمونې دا په ساختماني توګه د C++ کوډ لپاره ناممکن کړي چې له څو تارونو څخه وغوښتل شي، پداسې حال کې چې د زنګ ډول سیسټم د حد په اړخ کې د ډیټا ریسونو مخه نیسي. دا زموږ د پخوانۍ کړنلارې په پرتله د پام وړ پرمختګ و چې هڅه یې کوله په C++ کې د میټیکس سره تاریډینګ اضافه کړي، کوم چې په یوه ربع کې درې د ریس حالت پیښې رامینځته کړې.

د انجینرۍ ټیم هم د چټک تکرار دورې راپور ورکړی. نوې ب featuresې په زنګ کې د بشپړ همغږي ملاتړ سره رامینځته کیدی شي ، پداسې حال کې چې موجوده C++ ماډلونه پرته له تعدیل څخه دوام لري. د دې زیاتیدونکي ستراتیژۍ معنی دا وه چې موږ هیڅکله د لوړ خطر "لوی بنګ" مهاجرت نه درلود - یوازې ثابت او د اندازه کولو وړ پرمختګ.

په مکرر ډول پوښتل شوي پوښتنې

ایا زنګ کولی شي پرته له تعدیل څخه د واحد تار شوي C++ کتابتونونو ته زنګ ووهي؟

هو، مګر تاسو باید ډاډ ترلاسه کړئ چې دې کتابتون ته ټول زنګونه د یوې موضوع څخه ترسره کیږي. معیاري نمونه د وقف شوي اجرا کونکي تار رامینځته کول دي چې د چینل له لارې ټول C++ زنګونه سریالیز کوي. د زنګ د async دندې غوښتنې وړاندې کوي او ځوابونو ته انتظار باسي پرته لدې چې د څو موضوع رن ټایم بلاک کړي. د C++ کوډ پخپله هیڅ بدلون ته اړتیا نلري — د خوندیتوب محدودیت په بشپړ ډول د زنګ په اړخ کې پلي کیږي.

ایا د FFI سر سر دومره مهم دی چې د غوښتنلیک فعالیت اغیزه وکړي؟

انفرادي FFI زنګونه لږ تر لږه سر لري - په عمومي ډول د ساده فنکشن کال لپاره د 10 نانو ثانوي څخه کم. په هرصورت، د پیچلو ډیټا جوړښتونو سیریل کول او په سرحد کې د تار همغږي کول اضافه کیږي که تاسو په زرګونو ښه زنګونه وکړئ. د بسته بندۍ عملیات او د صفر کاپي سیریلائزیشن فارمیټونو کارول لکه FlatBuffers یا Cap'n Proto حتی په پیمانه هم د پام وړ نه ساتي.

ایا موږ باید خپل C++ کوډبیس د مداخلې پرځای په Rust کې ولیکو؟

د ډیرو ټیمونو لپاره، زیاتیدونکي مداخله خوندي او چټکه لاره ده. یو بشپړ بیا لیکل د میاشتې انجینرۍ خطر معرفي کوي چې د بشپړیدو پورې د کارونکي سره مخ کیدو ارزښت نلري. انٹرفیس کول تاسو ته اجازه درکوي سمدلاسه پرمختګونه واستوئ ، په تولید کې د زنګ طریقه تایید کړئ ، او ماډلونه په یو وخت کې د دې پراساس ځای په ځای کړئ چیرې چې همغږي خورا اغیزه وړاندې کوي. یوازې هغه ماډلونه بیا ولیکئ چیرې چې د FFI حدود ساتلو لګښت د بیا لیکلو لګښت څخه ډیر وي.


په Mewayz کې، موږ داسې زیربناوې جوړوو چې په تخنیکي او عملیاتي توګه اندازه کوي. زموږ د 207 ماډل سوداګریز OS د 138,000 ټیمونو سره مرسته کوي چې د $ 19 / میاشت څخه پیل کیږي د هوښیار کاري جریان پرمخ وړي. که تاسو پروژې اداره کوئ، عملیات اتومات کوئ، یا ستاسو د سوداګرۍ اندازه کول، میویز ستاسو د کار کولو طریقې سره سمون لري. خپل وړیا آزموینه په app.mewayz.com کې پیل کړئ او وګورئ چې یو عصري سوداګریز OS ستاسو د ټیم لپاره څه کولی شي.

Mewayz Network

We use cookies for analytics. Privacy Policy