নোড.জেএস এর ইভেন্ট-চালিত আর্কিটেকচার এবং অন্যান্য ভাষায় মাল্টি-থ্রেড প্রোগ্রামিংয়ের মধ্যে পার্থক্য কী?


উত্তর 1:

ইভেন্ট-চালিত এবং মাল্টি-থ্রেডড দৃষ্টান্ত উভয়ই কোড একটি অপারেটিং সিস্টেম প্রক্রিয়ার অভ্যন্তরে চলে।

প্রক্রিয়াটি যখন একাধিক থ্রেড চালায়, তখন এই থ্রেডগুলি প্রবন্ধের মেমরি (ঠিকানা স্থান) উভয়ই পড়া এবং লেখার জন্য ভাগ করে দেয়।

জাভাস্ক্রিপ্ট যা নোড.জেএসকে ক্ষমতা দেয় তা ডিজাইন দ্বারা একক থ্রেডযুক্ত। প্রতিটি ক্রিয়াকলাপ সমাপ্তির দিকে চালানোর গ্যারান্টিযুক্ত এবং বর্তমান কার্যক্রমে আর কোনও জাভাস্ক্রিপ্ট কোড সেই ফাংশন চলাকালীন চলবে না। প্রাকৃতিকভাবে অ্যাসিনক্রোনাস ইভেন্টস (নেটওয়ার্ক, ডিস্ক ইনপুট-আউটপুট, টাইমারস, অন্যান্য হার্ডওয়্যার এবং অপারেটিং সিস্টেম ইভেন্ট) ইঞ্জিন দ্বারা পরিচালিত হয় যা জাভাস্ক্রিপ্ট ফাংশনগুলি হ্যান্ডলার হিসাবে নিবন্ধিত করে (বা কলব্যাক) ইভেন্ট লুপের সারিতে মৃত্যুর পরে কার্যকর করা হবে after কাতারের সামনের কাজগুলি শেষ হয়েছে।

মাল্টি-থ্রেডড দৃষ্টান্তে, দুই বা ততোধিক থ্রেড সমান্তরালভাবে কোড চালায়, সুতরাং কোনও ফাংশন চলাকালীন বিভিন্ন প্রসেসরের মূল অংশে একটি পৃথক কোডের পাশাপাশি চলতে পারে, সম্ভবত একই মেমরির ঠিকানাগুলি পড়তে বা লিখতে পারে। কোড দ্বারা ভাগ করা মেমরির অ্যাক্সেস পরিচালনা করতে বিশেষ অপারেটিং সিস্টেম পদ্ধতি (সিঙ্ক্রোনাইজেশন প্রিমিটিভস) ব্যবহার না করা হলে এটি মেমোরির বেমানান অবস্থার সৃষ্টি করতে পারে।



উত্তর 2:

এটি একটি ভাল প্রশ্ন, "নোড.জেএস'-এর ইভেন্ট-চালিত আর্কিটেকচার এবং অন্যান্য ভাষায় মাল্টি-থ্রেডেড প্রোগ্রামিংয়ের মধ্যে পার্থক্য কী?"

আমরা এটিকে কিছুটা ভাঙ্গতে পারি এবং করা উচিত।

  • নোডের ইভেন্ট-চালিত আর্কিটেকচার।

ইভেন্ট চালিত আর্কিটেকচার নোডের সাথে একচেটিয়া নয়, যেমন, টর্নেডো (পাইথন), ভার্টেক্স (জাভা), আক্কা (স্কালা), রিএ্যাকটিভএক্স (একাধিক ভাষা)।

  • অন্যান্য ভাষায় মাল্টি থ্রেডেড প্রোগ্রামিং।

নোট করুন যে জাভাস্ক্রিপ্ট ডিজাইন করে একাধিক থ্রেড সমর্থন করে না। যদিও এটি ওয়েব ওয়ার্কার্সকে সমর্থন করে, যা আমি যতদূর জানি থ্রেড হিসাবে কাজ করতে পারে।

সুতরাং ইভেন্ট-চালিত নোডের জন্য অনন্য নয় এবং নোডে মাল্টি-থ্রেডিং করা যেতে পারে।

সুতরাং এখানে দুটি প্রশ্ন থাকতে পারে: "ইভেন্ট-চালিত বনাম বহু-থ্রেডিংয়ের মধ্যে পার্থক্য কী", এবং "নোড এবং অন্যান্য ভাষার (ফ্রেমওয়ার্ক) এর মধ্যে পার্থক্য কী"। যেহেতু এটি প্রশ্নের অভিপ্রায় হিসাবে প্রতীয়মান হয় তাই আমি পরবর্তীকালে মনোনিবেশ করব।

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

এগুলি বাদে, আপনার "সামঞ্জস্য" এর জন্য একাধিক মডেল সম্পর্কে সত্যই পড়া উচিত এবং এর প্রতিটিটির পক্ষে ভাল-বোধ বুঝতে হবে। এত দীর্ঘ সময়ের জন্য মাল্টি-থ্রেডিং কেন গ্রহণযোগ্য ছিল তা বোঝার জন্য বোনাস পয়েন্ট।



উত্তর 3:

ধারণাটিগত পার্থক্যগুলি আপনার মাথাটি চারপাশে মোড়ানো বেশ সহজ।

ইভেন্ট-চালিত আর্কিটেকচারে, আপনার প্রোগ্রামটি অবিচ্ছিন্ন একক থ্রেডযুক্ত লুপে চলছে (আপনি নোডে কিছু মাল্টি থ্রেডিং করতে পারেন তবে এই মুহুর্তে উদ্বিগ্ন হবেন না)। কোনও ইভেন্টে আগুন লাগলে প্রোগ্রামের অবসর সময়ে কোনও কাজ কল স্ট্যাকের সাথে মোকাবিলা করার জন্য প্রস্তুত থাকে।

মাল্টি-থ্রেড আর্কিটেকচার সাধারণত কোনও নতুন থ্রেড প্রেরণ করে যখন এটি কোনও ক্রমের জন্য অপেক্ষা করতে হবে। সুতরাং, আপনি একটি ডাটাবেসে কল করেছেন এবং আপনি একটি নতুন থ্রেড স্পিন করেছেন যা আপনার প্রয়োজনীয় সমস্ত জিনিস সম্পাদন করবে এবং আপনার যা প্রয়োজন তা করবে এবং শেষ থ্রেডে উপসংহারে বা পুনরায় যোগদান করবে।

এই দুটি পদ্ধতিই বিভিন্ন জিনিসের জন্য খুব দরকারী। ইভেন্টটি চালিত ইউজার ইন্টারফেস এবং সার্ভারের জন্য দুর্দান্ত কারণ আপনার প্রোগ্রামটি কখনই নতুন ঘটনা ঘটবে তা জানে না এবং প্রায়শই ইভেন্টগুলি বিস্ফোরণে আসবে। যখন কম্পিউটারে ভারী কাজের জন্য থ্রেডিং প্রয়োজনীয় যেখানে আপনি খুব ছোট ছোট টুকরো টুকরো টুকরো করতে চান (বা আপনি আপনার একক থ্রেডযুক্ত লুপের সীমাতে পৌঁছে যাচ্ছেন)।