Hacker News

আমি একক-থ্ৰেডযুক্ত C++ক বহু-থ্ৰেডযুক্ত Rust ৰ সৈতে আন্তঃপৃষ্ঠ কৰিলোঁ

আমি একক-থ্ৰেডযুক্ত C++ক বহু-থ্ৰেডযুক্ত Rust ৰ সৈতে আন্তঃপৃষ্ঠ কৰিলোঁ আন্তঃপৃষ্ঠৰ এই বিস্তৃত বিশ্লেষণে ইয়াৰ মূল উপাদানসমূহ আৰু বহল প্ৰভাৱসমূহৰ বিশদ পৰীক্ষা প্ৰদান কৰে। গুৰুত্বৰ মূল ক্ষেত্ৰসমূহ আলোচনাৰ কেন্দ্ৰবিন্দু হৈছে: কোৰ মেক...

1 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
ইয়াত সম্পূৰ্ণ SEO ব্লগ পোষ্টটো দিয়া হ'ল:

আমি একক-থ্ৰেডযুক্ত C++ক বহু-থ্ৰেডযুক্ত ৰাষ্ট

ৰ সৈতে আন্তঃপৃষ্ঠ কৰিলোঁ

এক-থ্ৰেডযুক্ত C++ ক'ডক বহু-থ্ৰেডযুক্ত Rust ৰ সৈতে আন্তঃপৃষ্ঠ কৰাটো কেৱল সম্ভৱ নহয় — ই এটা সম্পূৰ্ণ পুনৰ লিখা অবিহনে লিগেচি চিস্টেমসমূহক আধুনিকীকৰণ কৰাৰ অন্যতম ব্যৱহাৰিক উপায়। Mewayz ত, আমি আমাৰ 207-মডিউল ব্যৱসায়িক অপাৰেটিং চিষ্টেমটো 138,000 ব্যৱহাৰকাৰীক সেৱা আগবঢ়াবলৈ স্কেল কৰাৰ সময়ত এই সঠিক প্ৰত্যাহ্বানৰ সৈতে মোকাবিলা কৰিলোঁ, আৰু ফলাফলসমূহে মৌলিকভাৱে সলনি কৰিলে যে আমি চিস্টেমসমূহৰ আন্তঃকাৰ্য্যক্ষমতাৰ বিষয়ে কেনেকৈ ভাবো।

আপুনি একক-থ্ৰেডযুক্ত C++ক বহু-থ্ৰেডযুক্ত মৰিছাৰ সৈতে কিয় আন্তঃপৃষ্ঠ কৰিব?

বেছিভাগ উৎপাদন ব্যৱস্থাই বছৰ বছৰ ধৰি যুদ্ধ-পৰীক্ষিত C++ ক'ড কঢ়িয়াই লৈ ফুৰে। ৰাষ্টত সকলো পুনৰ লিখাটো কাগজত আকৰ্ষণীয় যেন লাগে, কিন্তু ই বৃহৎ বিপদ আৰু কেইবামাহো অভিযান্ত্ৰিক সময়ৰ প্ৰৱৰ্তন কৰে। প্ৰাগমেটিক পদ্ধতিটো হৈছে বৃদ্ধিশীল গ্ৰহণ — বৰ্তমানৰ C++ লজিক ৰেপ কৰা আৰু সমকালীনতা-গধুৰ কাৰ্য্যভাৰসমূহ Rust ৰ মালিকীস্বত্ব আৰ্হিলৈ অফলোড কৰা।

আমাৰ ক্ষেত্ৰত, মূল ব্যৱসায়িক লজিক মডিউলসমূহ বছৰ বছৰ ধৰি একক-থ্ৰেডযুক্ত C++ ত নিৰ্ভৰযোগ্যভাৱে চলি আছিল। তেওঁলোকে ক্ৰমিক কাৰ্য্য প্ৰক্ৰিয়াকৰণ, নথিপত্ৰ সৃষ্টি, আৰু বিত্তীয় গণনা আদি চম্ভালিছিল। কিন্তু আমাৰ ব্যৱহাৰকাৰী ভিত্তি 100K অতিক্ৰম কৰাৰ লগে লগে, আমাক সমান্তৰাল ডাটা প্ৰচেছিং, ​​সমান্তৰাল এপিআই নিয়ন্ত্ৰণ, আৰু নিৰাপদ অংশীদাৰী-অৱস্থা ব্যৱস্থাপনাৰ প্ৰয়োজন হৈছিল। Rust ৰ Send আৰু Sync বৈশিষ্ট্যই আমাক কম্পাইল-সময়ৰ সমকালীন নিশ্চয়তা দিছিল যি C++ এ বিস্তৃত হাতৰ অডিটিং অবিহনে আগবঢ়াব নোৱাৰে।

মূল প্ৰেৰণা হৈছে বিপদ হ্ৰাস কৰা। আপুনি যি কাম কৰে তাক ৰাখে, আৰু আপুনি কি স্কেল যোগ কৰে — আপোনাৰ সম্পূৰ্ণ ক'ডবেছক এটা প্ৰব্ৰজনত জুৱা খেলা নকৰাকৈ যি হয়তো কেতিয়াও শেষ নহ'ব।

এফএফআইৰ সীমাই প্ৰকৃততে কেনেকৈ কাম কৰে?

C++ আৰু Rust ৰ মাজৰ বিদেশী ফাংচন আন্তঃপৃষ্ঠ (FFI) এ C-সুসংগত ফাংচন স্বাক্ষৰৰ যোগেদি কাম কৰে। Rust ৰ extern "C" ব্লকসমূহে C++ এ প্ৰত্যক্ষভাৱে কল কৰিব পৰা ফলনসমূহ উন্মোচন কৰে, আৰু বিপৰীতভাৱে। জটিল প্ৰত্যাহ্বানটো আহি পৰে যেতিয়া Rust ৰ বহু-থ্ৰেডযুক্ত চলনসময়ে একক-থ্ৰেডযুক্ত C++ ক'ড নিৰাপদে আমন্ত্ৰণ কৰিব লাগে।

আমি এটা নিৰ্দিষ্ট স্থাপত্য ব্যৱহাৰ কৰি এইটো সমাধান কৰিলোঁ:

  • থ্ৰেড-সীমিত C++ এক্সিকিউটৰ: সকলো C++ কল এটা বাৰ্তা-পাছিং চেনেল ব্যৱহাৰ কৰি এটা নিৰ্দিষ্ট থ্ৰেডৰ যোগেদি ফানেল কৰা হয়, একক-থ্ৰেডযুক্ত অপৰিৱৰ্তনীয় কেতিয়াও উলংঘা হোৱাটো নিশ্চিত কৰে।
  • Rust async bridge স্তৰ: Tokio কাৰ্য্যসমূহে C++ এক্সিকিউটৰলৈ কাম জমা দিয়ে আৰু wait ফলাফলসমূহ oneshot চেনেলসমূহৰ যোগেদি জমা দিয়ে, Rust পক্ষ সম্পূৰ্ণৰূপে এচিনক্ৰ'নাছ কৰি ৰাখে।
  • অস্বচ্ছ পইণ্টাৰ ব্যৱস্থাপনা: C++ বস্তুসমূহক Rust ষ্ট্ৰাক্টসমূহত ৰেপ কৰা হয় যি নিৰ্ধাৰিত পৰিষ্কাৰ-পৰিচ্ছন্নতাৰ বাবে Drop প্ৰণয়ন কৰে, ভাষাৰ সীমাৰ ওপৰেৰে মেমৰি লিক ৰোধ কৰে।
  • সীমাত ক্ৰমিকীকৰণ: জটিল তথ্য গঠনসমূহক FFI স্তৰত FlatBuffers লৈ ক্ৰমিক কৰা হয়, ভংগুৰ গঠন পৰিকল্পনা মিলন এৰাই চলি আৰু প্ৰতিটো পক্ষৰ স্বতন্ত্ৰ বিৱৰ্তন সামৰ্থবান কৰি।
  • আতংক পৃথকীকৰণ: Rust ৰ catch_unwind এ প্ৰতিটো FFI প্ৰৱেশ বিন্দু ৰেপ কৰে যাতে এটা আতংকই ভাষাৰ সীমা কেতিয়াও অতিক্ৰম নকৰে, যিটো অসংজ্ঞায়িত আচৰণ হ'ব।

এই আৰ্হিটোৱে আমাক প্ৰমাণিত C++ লজিকৰ নিৰ্ভৰযোগ্যতাৰ সৈতে বহু-থ্ৰেডযুক্ত Rust ৰ থ্ৰুপুট দিছিল — মূল ব্যৱসায়িক নিয়মৰ এটাও শাৰী পুনৰ লিখা নোহোৱাকৈ।

এৰাই চলিবলগীয়া আটাইতকৈ ডাঙৰ ফান্দবোৰ কি?

আটাইতকৈ বিপজ্জনক ভুলটো হ'ল C++ ক'ড থ্ৰেড-নিৰাপদ বুলি ধৰি লোৱা যেতিয়া ই নহয়। গোলকীয় অৱস্থা, স্থিতিশীল চলকসমূহ, আৰু পুনৰ প্ৰৱেশ নকৰা লাইব্ৰেৰী কলে তথ্য দৌৰৰ সৃষ্টি কৰিব যি Rust ৰ কমপাইলাৰে FFI সীমাৰ ওপৰেৰে ধৰা পেলাব নোৱাৰে। Rust ৰ সুৰক্ষা নিশ্চয়তাসমূহ unsafe ব্লকত বন্ধ হয় — ভিতৰৰ সকলো আপোনাৰ দায়িত্ব।

<ব্লককোট>

মূল অন্তৰ্দৃষ্টি: Rust এ নিজৰ ক'ডৰ ভিতৰত মেমৰি সুৰক্ষাৰ নিশ্চয়তা দিয়ে, কিন্তু যি মুহূৰ্তত আপুনি 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++ বস্তুৱে Rust ৰ ঋণ পৰীক্ষকত অংশগ্ৰহণ নকৰে। যদি Rust এ এটা প্ৰসংগ ড্ৰপ কৰে যেতিয়া C++ এ এতিয়াও এটা পইণ্টাৰ ধৰি থাকে, আপুনি ব্যৱহাৰ-পৰৱৰ্তী-মুক্ত বাগ পায় যি নিৰ্মমভাৱে নিদান কৰাটো কঠিন। আমি ইয়াক কঠোৰ মালিকীস্বত্ব অৰ্থবিজ্ঞান বলবৎ কৰি সমাধান কৰিলোঁ: C++ বস্তুসমূহ সদায় হুবহু এটা Rust ৰেপাৰৰ মালিকানাধীন, আৰু অংশীদাৰী অভিগম Rust ফালে Arc-ভিত্তিক প্ৰসংগ গণনাৰ মাজেৰে যায়।

কাৰ্য্যক্ষমতা-ভিত্তিক, অত্যধিক FFI কলে প্ৰসংগ চুইচিং আৰু ক্ৰমিকীকৰণৰ পৰা ওভাৰহেড সৃষ্টি কৰে। আমি য'তেই সম্ভৱ কাৰ্য্যসমূহ বেচ কৰো, ব্যক্তিগত ক্ৰছ-লেংগুৱেজ কল কৰাৰ পৰিৱৰ্তে C++ এক্সিকিউটৰলৈ কৰ্ম বস্তুৰ এটা শাৰী পঠাওঁ।

এই পদ্ধতিয়ে উৎপাদনত কেনেদৰে কাম কৰিলে?

আমাৰ প্লেটফৰ্মত হাইব্ৰিড আৰ্কিটেকচাৰ মোতায়েন কৰাৰ পিছত, আমি কংক্ৰিট উন্নতিসমূহ জুখিলোঁ। অনুৰোধ থ্ৰুপুট 3.4x বৃদ্ধি কৰা হৈছে মডিউলসমূহৰ বাবে যি পূৰ্বতে ক্ৰমিক C++ প্ৰচেছিঙত বটলনেক কৰিছিল। টেইল লেটেন্সি (p99) ৬১% হ্ৰাস পাইছে কাৰণ Rust ৰ এচিংক চলনসময়ে স্বতন্ত্ৰ অনুৰোধসমূহ সমান্তৰালভাৱে প্ৰক্ৰিয়া কৰিব পাৰিছিল যেতিয়া C++ এ ইয়াৰ নিৰ্দিষ্ট থ্ৰেডত গণনা-গধুৰ কামসমূহ নিয়ন্ত্ৰণ কৰিছিল।

তাতকৈও গুৰুত্বপূৰ্ণ কথাটো হ'ল, উৎপাদনৰ প্ৰথম ছমাহত আমাৰ সমকালীনতা-সম্পৰ্কীয় বাগ শূন্য আছিল। থ্ৰেড-কনফাইনেমেণ্ট পেটাৰ্ণে C++ ক'ডক একাধিক থ্ৰেডৰ পৰা কল কৰাটো গাঁথনিগতভাৱে অসম্ভৱ কৰি তুলিছিল, আনহাতে Rust ৰ টাইপ চিস্টেমে সীমাৰ কাষত ডাটা ৰেচক বাধা দিছিল। আমাৰ পূৰ্বৰ পদ্ধতিৰ তুলনাত এইটো এটা উল্লেখযোগ্য উন্নতি আছিল যে মই মিউটেক্সৰ সৈতে C++ ত থ্ৰেডিং যোগ কৰিবলৈ চেষ্টা কৰিছিলো, যিয়ে এটা ত্ৰিমাসিকত তিনিটা জাতি-চৰ্ত কাণ্ডৰ সৃষ্টি কৰিছিল।

ইঞ্জিনিয়াৰিং দলটোৱেও দ্ৰুত পুনৰাবৃত্তি চক্ৰৰ ৰিপৰ্ট দিছে। নতুন বৈশিষ্ট্যসমূহ Rust ত সম্পূৰ্ণ সমকালীন সমৰ্থনৰ সৈতে নিৰ্মাণ কৰিব পাৰি, যেতিয়া বৰ্ত্তমানৰ C++ মডিউলসমূহ পৰিবৰ্তন নকৰাকৈ চলি থাকিল। এই বৃদ্ধি পোৱা কৌশলৰ অৰ্থ আছিল আমাৰ কেতিয়াও উচ্চ-বিপদজনক "বিগ বেং" প্ৰব্ৰজন হোৱা নাছিল — মাত্ৰ স্থিৰ, জুখিব পৰা উন্নতি।

সঘনাই সোধা প্ৰশ্ন

Rast এ পৰিবৰ্তন নকৰাকৈ একক-থ্ৰেডযুক্ত C++ লাইব্ৰেৰীসমূহ কল কৰিব পাৰেনে?

হয়, কিন্তু আপুনি নিশ্চিত কৰিব লাগিব যে সেই লাইব্ৰেৰীলৈ সকলো কল এটা থ্ৰেডৰ পৰা হোৱাটো। প্ৰামাণিক আৰ্হিটো হৈছে এটা নিৰ্দিষ্ট এক্সিকিউটৰ থ্ৰেড সৃষ্টি কৰা যি এটা চেনেলৰ যোগেদি সকলো C++ কল ক্ৰমিক কৰে। Rust ৰ এচিংক কাৰ্য্যসমূহে অনুৰোধসমূহ জমা দিয়ে আৰু বহু-থ্ৰেডযুক্ত চলনসময় বন্ধ নকৰাকৈ সঁহাৰিসমূহ অপেক্ষা কৰে। C++ ক'ডৰ বাবে নিজেই কোনো পৰিবৰ্তনৰ প্ৰয়োজন নাই — সুৰক্ষা বাধা সম্পূৰ্ণৰূপে Rust পক্ষত বলবৎ কৰা হৈছে।

FFI অভাৰহেড এপ্লিকেচনৰ পৰিৱেশনত প্ৰভাৱ পেলাবলৈ যথেষ্ট গুৰুত্বপূৰ্ণ নেকি?

ব্যক্তিগত FFI কলৰ নূন্যতম ওভাৰহেড থাকে — সাধাৰণতে এটা সৰল ফাংচন কলৰ বাবে 10 নেন'ছেকেণ্ডৰ তলত। কিন্তু, জটিল তথ্য গঠনসমূহৰ ক্ৰমিকীকৰণ আৰু সীমাত থ্ৰেড সমন্বয় যোগ হয় যদি আপুনি হাজাৰ হাজাৰ মিহি-দানাযুক্ত কল কৰে। কাৰ্য্যসমূহ বেচিং কৰা আৰু FlatBuffers বা Cap'n Proto ৰ দৰে শূন্য-কপি ক্ৰমিক বিন্যাস ব্যৱহাৰ কৰি স্কেলতো ওভাৰহেড নগণ্য কৰি ৰাখে।

আমি আমাৰ C++ ক'ডবেছ আন্তঃপৃষ্ঠৰ পৰিৱৰ্তে Rust ত পুনৰ লিখিব লাগেনে?

বেছিভাগ দলৰ বাবে, বৃদ্ধিমূলক আন্তঃপৃষ্ঠই হৈছে সুৰক্ষিত আৰু দ্ৰুত পথ। এটা সম্পূৰ্ণ পুনৰ লিখাই সম্পূৰ্ণ নোহোৱালৈকে কোনো ব্যৱহাৰকাৰী-মুখী মূল্য নোহোৱাকৈ মাহৰ পিছত মাহ ধৰি অভিযান্ত্ৰিক বিপদৰ পৰিচয় দিয়ে। আন্তঃপৃষ্ঠই আপোনাক উন্নতিসমূহ তৎক্ষণাত প্ৰেৰণ কৰিব দিয়ে, উৎপাদনত Rust পদ্ধতি বৈধ কৰিব পাৰে, আৰু সমকালীনতাই সৰ্বাধিক প্ৰভাৱ ক'ত প্ৰদান কৰে তাৰ ওপৰত ভিত্তি কৰি এটা এটাকৈ মডিউলসমূহ প্ৰব্ৰজন কৰিব পাৰে। কেৱল মডিউলসমূহ পুনৰ লিখক য'ত FFI সীমা ৰক্ষণাবেক্ষণৰ খৰচ পুনৰ লিখাৰ খৰচতকৈ বেছি হয়।


মেৱাইজত, আমি আন্তঃগাঁথনি নিৰ্মাণ কৰোঁ যিয়ে স্কেল কৰে — কাৰিকৰী আৰু কাৰ্য্যকৰী দুয়োটা দিশতে। আমাৰ ২০৭-মডিউল ব্যৱসায়িক অপাৰেটিং চিষ্টেমে ১৩৮,০০০ দলক $১৯/মাহৰ পৰা আৰম্ভ কৰি স্মাৰ্ট ৱৰ্কফ্ল' চলাবলৈ সহায় কৰে। আপুনি প্ৰকল্পসমূহ পৰিচালনা কৰক, কাৰ্য্যকলাপসমূহ স্বয়ংক্ৰিয় কৰক, বা আপোনাৰ ব্যৱসায় স্কেলিং কৰক, Mewayz আপুনি কাম কৰাৰ ধৰণৰ সৈতে খাপ খায়। app.mewayz.com ত আপোনাৰ বিনামূলীয়া পৰীক্ষামূলক আৰম্ভ কৰক আৰু চাওক এটা আধুনিক ব্যৱসায়িক অপাৰেটিং ছিষ্টেমে আপোনাৰ দলৰ বাবে কি কৰিব পাৰে।

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