Hacker News

ကျွန်ုပ်တို့သည် single-threaded C++ ကို multi-threaded Rust ဖြင့် ချိတ်ဆက်ထားသည်။

ကျွန်ုပ်တို့သည် single-threaded C++ ကို multi-threaded Rust ဖြင့် ချိတ်ဆက်ထားသည်။ interfaced ၏ ကျယ်ကျယ်ပြန့်ပြန့်ခွဲခြမ်းစိတ်ဖြာမှုသည် ၎င်း၏အဓိကအစိတ်အပိုင်းများကို အသေးစိတ်စစ်ဆေးခြင်းနှင့် ပိုမိုကျယ်ပြန့်သောသက်ရောက်မှုများကို ပေးဆောင်သည်။ အာရုံစူးစိုက်မှုနယ်ပယ်များ ဆွေးနွေးပွဲကို ဗဟိုပြုသည်- Core Mech...

2 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
ဤသည်မှာ SEO ဘလော့ဂ်ပို့စ်အပြည့်အစုံဖြစ်သည်-

ကျွန်ုပ်တို့သည် Single-Threaded C++ ကို Multi-Threaded Rust ဖြင့် ချိတ်ဆက်ထားသည်

တကြောင်းတည်းပါသော C++ ကုဒ်ကို multi-threaded Rust နှင့် ချိတ်ဆက်ခြင်းမှာ ဖြစ်နိုင်သည်သာမက — အပြည့်အစုံကို ပြန်လည်ရေးသားခြင်းမပြုဘဲ အမွေအနှစ်စနစ်များကို ခေတ်မီစေရန် လက်တွေ့အကျဆုံးနည်းလမ်းများထဲမှ တစ်ခုဖြစ်သည်။ Mewayz တွင်၊ ကျွန်ုပ်တို့သည် သုံးစွဲသူ 138,000 ကို ဝန်ဆောင်မှုပေးရန်အတွက် ကျွန်ုပ်တို့၏ 207-module လုပ်ငန်း OS ကို ချဲ့ထွင်သောအခါတွင် ဤစိန်ခေါ်မှုကို အတိအကျကိုင်တွယ်ဖြေရှင်းခဲ့ပြီး ရလဒ်များသည် စနစ်များ အပြန်အလှန်လုပ်ဆောင်နိုင်မှုအပေါ် ကျွန်ုပ်တို့၏ အခြေခံကျကျ ပြောင်းလဲသွားပါသည်။

သင် အဘယ်ကြောင့် Single-Threaded C++ ကို Multi-Threaded Rust ဖြင့် ချိတ်ဆက်နိုင်သနည်း။

ထုတ်လုပ်မှုစနစ်အများစုသည် နှစ်ပေါင်းများစွာ တိုက်ခိုက်စမ်းသပ်ထားသော C++ ကုဒ်ကို သယ်ဆောင်သည်။ Rust တွင် အရာအားလုံးကို ပြန်လည်ရေးခြင်းသည် စာရွက်ပေါ်တွင် ဆွဲဆောင်မှုရှိသည်ဟု ထင်ရသော်လည်း ၎င်းသည် ကြီးမားသောအန္တရာယ်နှင့် အင်ဂျင်နီယာအချိန်လပေါင်းများစွာကို မိတ်ဆက်ပေးသည်။ လက်တွေ့ကျသောချဉ်းကပ်မှုမှာ တိုးမြင့်မွေးစားခြင်းဖြစ်သည် — Rust ၏ ပိုင်ဆိုင်မှုပုံစံသို့ ဆက်စပ်-လေးလံသောအလုပ်များကို ဖယ်ထုတ်နေစဉ် ရှိရင်းစွဲ C++ ယုတ္တိဗေဒကို ထုပ်ပိုးထားသည်။

ကျွန်ုပ်တို့၏ကိစ္စတွင်၊ core business logic modules များသည် single-threaded C++ တွင် နှစ်ပေါင်းများစွာ စိတ်ချယုံကြည်စွာလည်ပတ်နေခဲ့သည်။ ၎င်းတို့သည် ဆင့်ကဲလုပ်ငန်းဆောင်တာလုပ်ဆောင်ခြင်း၊ စာရွက်စာတမ်းထုတ်လုပ်ခြင်းနှင့် ငွေကြေးဆိုင်ရာ တွက်ချက်မှုများကို ကိုင်တွယ်ဆောင်ရွက်သည်။ ကျွန်ုပ်တို့၏အသုံးပြုသူအခြေခံသည် 100K ကျော်လာသည်နှင့်အမျှ၊ ကျွန်ုပ်တို့သည် အပြိုင်ဒေတာလုပ်ဆောင်ခြင်း၊ တစ်ပြိုင်တည်း API ကိုင်တွယ်ခြင်းနှင့် ဘေးကင်းသောမျှဝေသည့်ပြည်နယ်စီမံခန့်ခွဲမှုကို လိုအပ်ပါသည်။ Rust ၏ Send နှင့် Sync စရိုက်များသည် C++ သည် ကျယ်ပြန့်သောလက်ဖြင့်စစ်ဆေးမှုမရှိဘဲ ရိုးရှင်းစွာမလုပ်ဆောင်နိုင်ကြောင်း အာမခံချက်ပေးပါသည်။

အဓိက လှုံ့ဆော်မှုမှာ အန္တရာယ် လျှော့ချရေး ဖြစ်သည်။ သင်လုပ်ဆောင်သောအရာများကို သိမ်းဆည်းထားပြီး မည်သည့်စကေးများကို ပေါင်းထည့်သည်— ဘယ်သောအခါမှ မပြီးဆုံးနိုင်သော ပြောင်းရွှေ့မှုတစ်ခုတွင် သင်၏ကုဒ်အခြေခံတစ်ခုလုံးကို လောင်းကစားခြင်းမပြုဘဲ။

FFI နယ်နိမိတ် အမှန်တကယ် အလုပ်လုပ်ပုံ။

C++ နှင့် Rust အကြား Foreign Function Interface (FFI) သည် C-compatible function signatures မှတဆင့် လုပ်ဆောင်သည်။ Rust ၏ extern "C" သည် C++ တိုက်ရိုက်ခေါ်ဆိုနိုင်သော လုပ်ဆောင်ချက်များကို ပိတ်ဆို့ထားပြီး အပြန်အလှန်အားဖြင့် ပိတ်ဆို့ထားသည်။ Rust ၏ multi-threaded runtime သည် single-threaded C++ ကုဒ်ကို ဘေးကင်းစွာ ခေါ်ဆိုရန် လိုအပ်သောအခါတွင် အရေးကြီးသော စိန်ခေါ်မှု ထွက်ပေါ်လာသည်။

၎င်းကို သီးခြားဗိသုကာပညာဖြင့် ဖြေရှင်းခဲ့သည်-

  • Thread-confined C++ executor- C++ ခေါ်ဆိုမှုအားလုံးကို မက်ဆေ့ချ်ဖြတ်သွားသည့်ချန်နယ်ကို အသုံးပြု၍ သီးခြားအကြောင်းအရာတစ်ခုမှတစ်ဆင့် ချိတ်ဆက်ထားပြီး၊ single-threaded invariant သည် ဘယ်သောအခါမှ မချိုးဖောက်ကြောင်း သေချာစေပါသည်။
  • Rust async တံတားအလွှာ- Tokio လုပ်ဆောင်ချက်များသည် C++ executor သို့ အလုပ်များပေးပို့ပြီး ရလဒ်များကို oneshot ချန်နယ်များမှတဆင့် await ဖြင့် Rust side ကို အပြည့်အဝ asynchronous ဖြစ်စေပါသည်။
  • အလင်းပြညွှန်ပြမှု စီမံခန့်ခွဲမှု- C++ အရာဝတ္ထုများကို အဆုံးအဖြတ်ပေးသည့် ရှင်းလင်းမှုအတွက် Drop ကို အကောင်အထည်ဖေါ်သည့် Rust structs များဖြင့် ထုပ်ပိုးထားပြီး ဘာသာစကားနယ်နိမိတ်တစ်လျှောက် မှတ်ဉာဏ်ယိုစိမ့်မှုကို ကာကွယ်ပေးပါသည်။
  • နယ်နိမိတ်တွင် နံပါတ်စဉ်သတ်မှတ်ခြင်း- ရှုပ်ထွေးသောဒေတာဖွဲ့စည်းပုံများကို FFI အလွှာရှိ FlatBuffers တွင် နံပါတ်စဉ်တပ်ထားပြီး၊ ပျက်စီးလွယ်သောဖွဲ့စည်းပုံအပြင်အဆင်ကို ကိုက်ညီမှုမရှိစေရန်နှင့် ဘေးတစ်ဖက်စီ၏ လွတ်လပ်သောဆင့်ကဲဖြစ်စဉ်များကို ဖွင့်ပေးထားသည်။
  • ထိတ်လန့်သောအထီးကျန်ခြင်း- Rust ၏ catch_unwind သည် FFI ဝင်ခွင့်အမှတ်တိုင်းကို ခြုံငုံမိသောကြောင့် ထိတ်လန့်တကြားဖြစ်ရသည့် ဘာသာစကားနယ်နိမိတ်ကို ဘယ်သောအခါမှ မဖြတ်ကျော်နိုင်ပါ။

ဤပုံစံသည် ကျွန်ုပ်တို့အား သက်သေပြထားသော C++ ယုတ္တိဗေဒ၏ ယုံကြည်စိတ်ချရမှုဖြင့် ချည်ပေါင်းမျိုးစုံ Rust ၏ ဖြတ်သန်းမှုကို ပေးစွမ်းနိုင်သည် — မူရင်းစီးပွားရေးစည်းမျဉ်းများ၏ စာကြောင်းတစ်ကြောင်းတည်းကို ပြန်လည်မရေးဘဲ ပြန်ရေးပါ။

ရှောင်ရန် အကြီးမားဆုံးသော ချို့ယွင်းချက်များကား အဘယ်နည်း။

အန္တရာယ်အရှိဆုံးအမှားမှာ C++ ကုဒ်မဟုတ်သည့်အခါတွင် thread-safe ဟုယူဆခြင်းဖြစ်သည်။ ကမ္ဘာလုံးဆိုင်ရာ အခြေအနေ၊ တည်ငြိမ်သော ကိန်းရှင်များနှင့် နောက်ပြန်မဆုတ်သော ဒစ်ဂျစ်တိုက်ခေါ်ဆိုမှုများသည် FFI နယ်နိမိတ်ကိုဖြတ်၍ Rust ၏ compiler မတွေ့နိုင်သော ဒေတာပြိုင်ပွဲများကို ဖြစ်စေသည်။ Rust ၏ ဘေးကင်းရေး အာမခံချက်များသည် unsafe block တွင် ရပ်တန့်နေပါသည် — အတွင်းရှိ အရာအားလုံးသည် သင့်တာဝန်ဖြစ်သည်။

သော့ထိုးထွင်းသိမြင်မှု- Rust သည် ၎င်း၏ကိုယ်ပိုင်ကုဒ်အတွင်း မမ်မိုရီလုံခြုံရေးကို အာမခံပေးသည်၊ သို့သော် သင် FFI နယ်နိမိတ်ကို C++ သို့ဖြတ်ကျော်လိုက်သောအခါတွင် သင်သည် C++ တွင်ရှိသော thread-safety ပြဿနာအားလုံးကို အမွေဆက်ခံပါသည်။ ထိုနယ်နိမိတ်တဝိုက်ရှိ ဗိသုကာလက်ရာသည် ၎င်း၏တစ်ဖက်တစ်ချက်ရှိ ကုဒ်ထက် ပိုအရေးကြီးပါသည်။

💡 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++ အရာဝတ္ထုများသည် Rust ၏ ချေးယူစစ်ဆေးခြင်းတွင် မပါဝင်ပါ။ C++ သည် ညွှန်ပြချက်ကို ဆက်လက်ထိန်းသိမ်းထားစဉ် Rust သည် အကိုးအကားကို ချန်ထားခဲ့ပါက၊ သင်သည် ရောဂါရှာဖွေရန် အလွန်ခက်ခဲသော အသုံးပြုပြီးနောက်-အခမဲ့ bugs ကို ရရှိမည်ဖြစ်သည်။ တင်းကျပ်သော ပိုင်ဆိုင်မှုဆိုင်ရာ အယူအဆများကို လိုက်နာခြင်းဖြင့် ၎င်းကို ကျွန်ုပ်တို့ ဖြေရှင်းခဲ့သည်- C++ အရာဝတ္ထုများသည် Rust wrapper တစ်ခုတည်းက အမြဲတမ်း ပိုင်ဆိုင်ထားပြီး မျှဝေသုံးစွဲခွင့်သည် Rust ဘက်ခြမ်းရှိ Arc-based ရည်ညွှန်းရေတွက်ခြင်းမှတဆင့် လုပ်ဆောင်ပါသည်။

စွမ်းဆောင်ရည်အရ၊ အလွန်အကျွံ FFI ခေါ်ဆိုမှုများသည် ဆက်စပ်ပြောင်းလဲမှုနှင့် အမှတ်စဉ်ပြောင်းလဲခြင်းမှ အကျုံးဝင်စေသည်။ ကျွန်ုပ်တို့သည် တစ်ဦးချင်းဘာသာစကားဖြင့်ခေါ်ဆိုမှုများပြုလုပ်ခြင်းထက် C++ executor သို့ အလုပ်ပစ္စည်းများတန်းစီခြင်းကို ဖြစ်နိုင်သမျှနေရာတိုင်းတွင် အစုလိုက်လုပ်ဆောင်ပါသည်။

ဤနည်းလမ်းသည် ထုတ်လုပ်မှုတွင် မည်သို့လုပ်ဆောင်ခဲ့သနည်း။

ကျွန်ုပ်တို့၏ပလပ်ဖောင်းတစ်လျှောက် ဟိုက်ဘရစ်ဗိသုကာကို အသုံးချပြီးနောက် ခိုင်မာသောတိုးတက်မှုများကို တိုင်းတာပါသည်။ ဆက်တိုက် C++ လုပ်ဆောင်ခြင်းတွင် ယခင်က ပိတ်ဆို့ခဲ့သော မော်ဂျူးများအတွက် တောင်းဆိုမှု ပမာဏသည် 3.4x တိုးလာသည်။ Rust ၏ async runtime သည် C++ သည် ၎င်း၏သီးသန့်တွဲတွင် တွက်ချက်မှုပြင်းထန်သောအလုပ်များကို ကိုင်တွယ်စဉ်တွင် အမြီးကြာတင်နေချိန် (p99) မှ 61% ကျဆင်းသွားသည်။

ပိုအရေးကြီးသည်မှာ၊ ထုတ်လုပ်ခြင်း၏ပထမခြောက်လတွင် ကျွန်ုပ်တို့တွင် တူညီသောငွေကြေးနှင့်ပတ်သက်သည့် ချို့ယွင်းချက်လုံးဝမရှိပါ။ Thread-confinement ပုံစံသည် C++ ကုဒ်ကို အဆက်အစပ်များစွာမှ ခေါ်ဆိုရန်အတွက် ဖွဲ့စည်းတည်ဆောက်ပုံအရ မဖြစ်နိုင်ဘဲ Rust ၏ အမျိုးအစားစနစ်သည် နယ်နိမိတ်ဘက်ခြမ်းရှိ ဒေတာပြိုင်ပွဲများကို တားဆီးထားသည်။ ၎င်းသည် လေးပုံတစ်ပုံတည်းတွင် လူမျိုးရေးအခြေအနေ အဖြစ်အပျက် သုံးခုကို ဖြစ်ပေါ်စေသည့် C++ တွင် ချည်မျှင်များထည့်ရန် ကြိုးစားခြင်း၏ ယခင်ချဉ်းကပ်မှုထက် သိသာထင်ရှားသော တိုးတက်မှုတစ်ခုဖြစ်သည်။

အင်ဂျင်နီယာအဖွဲ့သည် ပိုမိုမြန်ဆန်သော ထပ်လောင်းလည်ပတ်မှုများကို အစီရင်ခံတင်ပြပါသည်။ လက်ရှိ C++ မော်ဂျူးများကို ပြုပြင်မွမ်းမံခြင်းမရှိဘဲ ဆက်လက်လုပ်ဆောင်နေချိန်တွင် ဝန်ဆောင်မှုအသစ်များကို Rust တွင် အပြည့်အဝ ပံ့ပိုးကူညီမှုဖြင့် တည်ဆောက်နိုင်သည်။ ဤတိုးမြှင့်နည်းဗျူဟာသည် ကျွန်ုပ်တို့တွင် အန္တရာယ်များသော "big bang" ရွှေ့ပြောင်းခြင်းမျိုး ဘယ်သောအခါမှ မကြုံခဲ့ရပေ — တည်ငြိမ်ပြီး တိုင်းတာနိုင်သော တိုးတက်မှုမျှသာဖြစ်သည်။

အမေးများသောမေးခွန်းများ

Rust သည် single-threaded C++ စာကြည့်တိုက်များကို ပြုပြင်မွမ်းမံခြင်းမရှိဘဲ ခေါ်ဆိုနိုင်ပါသလား။

ဟုတ်ကဲ့၊ ဒါပေမယ့် အဲဒီစာကြည့်တိုက်ကို ခေါ်ဆိုမှုအားလုံးကို စာတွဲတစ်ခုကနေပြီး သေချာအောင်လုပ်ရပါမယ်။ စံပုံစံသည် ချန်နယ်တစ်ခုမှတစ်ဆင့် C++ ခေါ်ဆိုမှုများအားလုံးကို အမှတ်အသားပြုသည့် သီးခြား executor thread တစ်ခုကို ဖန်တီးရန်ဖြစ်သည်။ Rust ၏ စင့်ခ်လုပ်စရာများ သည် တောင်းဆိုချက်များကို တင်သွင်းပြီး လိုင်းပေါင်းစုံ runtime ကို မပိတ်ဆို့ဘဲ တုံ့ပြန်မှုများကို စောင့်မျှော်နေပါသည်။ C++ ကုဒ်ကိုယ်တိုင်က ပြောင်းလဲစရာမလိုအပ်ပါ — ဘေးကင်းရေးကန့်သတ်ချက်ကို Rust ဘက်တွင် လုံးဝပြဌာန်းထားသည်။

FFI သည် အက်ပလီကေးရှင်းစွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှုရှိရန် လုံလောက်ပါသလား။

တစ်ဦးချင်း FFI ခေါ်ဆိုမှုများသည် ရိုးရှင်းသောလုပ်ဆောင်ချက်ခေါ်ဆိုမှုအတွက် ပုံမှန်အားဖြင့် 10 နာနိုစက္ကန့်အောက်သာရှိသည်။ သို့သော်၊ ရှုပ်ထွေးသောဒေတာဖွဲ့စည်းပုံများကို အမှတ်စဉ်ပြုလုပ်ခြင်းနှင့် နယ်နိမိတ်တွင် ချည်မျှင်ထပ်တူပြုခြင်းတို့ကို ပေါင်းစည်းလိုက်လျှင် သင်သည် ထောင်နှင့်ချီသောခေါ်ဆိုမှုများပြုလုပ်ပါက ပေါင်းထည့်ပါသည်။ ပေါင်းစပ်လုပ်ဆောင်မှုများနှင့် FlatBuffers သို့မဟုတ် Cap'n Proto ကဲ့သို့သော သုည-မိတ္တူ အမှတ်စဉ်ဖော်မတ်များကို အသုံးပြုခြင်းသည် အတိုင်းအတာတစ်ခုအထိပင် ပေါ့ပေါ့ပါးပါးရှိနေပါသည်။

ကျွန်ုပ်တို့သည် အပြန်အလှန်ဆက်သွယ်ခြင်းအစား Rust တွင် ကျွန်ုပ်တို့၏ C++ ကုဒ်ဘေ့စ်ကို ပြန်လည်ရေးသားသင့်ပါသလား။

အသင်းအများစုအတွက်၊ တိုးမြင့်ချိတ်ဆက်မှုသည် ပိုမိုလုံခြုံပြီး ပိုမိုမြန်ဆန်သောလမ်းကြောင်းဖြစ်သည်။ အပြည့်အစုံ ပြန်လည်ရေးသားခြင်းသည် ပြီးမြောက်သည်အထိ အသုံးပြုသူရင်ဆိုင်ရမည့်တန်ဖိုးမရှိဘဲ လနှင့်ချီသော အင်ဂျင်နီယာအန္တရာယ်ကို မိတ်ဆက်ပေးသည်။ Interfacing သည် သင့်အား တိုးတက်မှုများကို ချက်ချင်းပေးပို့နိုင်စေသည်၊ ထုတ်လုပ်မှုတွင် Rust ချဉ်းကပ်မှုကို မှန်ကန်ကြောင်းအတည်ပြုကာ တူညီသောအကျိုးသက်ရောက်မှုအများဆုံးပေးသည့်နေရာတွင် တစ်ကြိမ်လျှင် module များကို ရွှေ့ပြောင်းပေးပါသည်။ FFI နယ်နိမိတ်ကို ထိန်းသိမ်းရန် ကုန်ကျစရိတ်သည် ပြန်လည်ရေးသားခြင်းကုန်ကျစရိတ်ထက် ကျော်လွန်သည့် မော်ဂျူးများကိုသာ ပြန်လည်ရေးသားပါ။


Mewayz တွင် ကျွန်ုပ်တို့သည် နည်းပညာပိုင်းအရရော လုပ်ငန်းဆောင်ရွက်မှုအရပါ အတိုင်းအတာအထိ အတိုင်းအတာရှိသော အခြေခံအဆောက်အဦများကို တည်ဆောက်ပါသည်။ ကျွန်ုပ်တို့၏ 207-module လုပ်ငန်း OS သည် အသင်းပေါင်း 138,000 ကို တစ်လလျှင် $19 မှစတင်၍ ပိုမိုထက်မြက်သော အလုပ်အသွားအလာများကို လုပ်ဆောင်နိုင်ရန် ကူညီပေးပါသည်။ သင်သည် ပရောဂျက်များကို စီမံခန့်ခွဲခြင်း၊ အလိုအလျောက် လည်ပတ်ခြင်း သို့မဟုတ် သင့်လုပ်ငန်းကို ချဲ့ထွင်နေသည်ဖြစ်စေ Mewayz သည် သင်အလုပ်လုပ်ပုံနှင့် လိုက်လျောညီထွေဖြစ်စေသည်။ app.mewayz.com တွင် သင်၏ အခမဲ့ အစမ်းသုံးမှုကို စတင်ပြီး သင့်အဖွဲ့အတွက် ခေတ်မီစီးပွားရေး OS က ဘာလုပ်ပေးနိုင်သည်ကို ကြည့်လိုက်ပါ။

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

HR Management Guide →

Manage your team effectively: employee profiles, leave management, payroll, and performance reviews.

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 →

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