পিএইচপি (বা জাভা / এএসপি.এনইটি / রুবি) ভিত্তিক ওয়েবসার্সগুলিতে প্রতিটি ক্লায়েন্টের অনুরোধ নতুন থ্রেডে ইনস্ট্যান্ট করা হয়। তবে নোড.জেজে সমস্ত ক্লায়েন্ট একই থ্রেডে চালিত হয় (তারা এমনকি একই ভেরিয়েবলগুলি ভাগ করতে পারে!) আমি বুঝতে পারি যে I / O ক্রিয়াকলাপগুলি ইভেন্ট-ভিত্তিক তাই তারা মূল থ্রেড লুপটি অবরুদ্ধ করে না।
আমি যা বুঝতে পারি না কেন নোডের লেখক এটিকে একক থ্রেডযুক্ত হিসাবে বেছে নিয়েছেন? এটি বিষয়গুলিকে কঠিন করে তোলে। উদাহরণস্বরূপ, আমি সিপিইউ নিবিড় ফাংশনটি পরিচালনা করতে পারছি না কারণ এটি মূল থ্রেডকে ব্লক করে (এবং নতুন ক্লায়েন্টের অনুরোধগুলি অবরুদ্ধ করা হয়েছে) সুতরাং আমার একটি প্রক্রিয়া চালিত করা দরকার (যার অর্থ আমার আলাদা জাভাস্ক্রিপ্ট ফাইল তৈরি করতে হবে এবং অন্য নোড প্রক্রিয়াটি চালানো দরকার) এটা)। তবে পিএইচপি সিপিইউতে নিবিড় কাজগুলি অন্য ক্লায়েন্টদের ব্লক করে না কারণ আমি যেমন উল্লেখ করেছি প্রতিটি ক্লায়েন্ট আলাদা থ্রেডে রয়েছে। মাল্টি-থ্রেডেড ওয়েব সার্ভারের সাথে তুলনা করে এর সুবিধাগুলি কী কী?
দ্রষ্টব্য: আমি এটি পেতে ক্লাস্টারিং ব্যবহার করেছি, তবে এটি সুন্দর নয়।
node -e 'setTimeout(()=>{},1000);' & ps -T h $! | wc -l; kill $! প্রদর্শন করে। প্রধান ইভেন্টের লুপটি একক থ্রেডেড (এটি না থাকলে এটি বেশি বোঝা যায় না) তবে নোড ভারীভাবে বহু-থ্রেডযুক্ত এবং আপনি যদি চান তবে আপনি মাল্টি-থ্রেডড সিঙ্গল-প্রসেস অ্যাপ্লিকেশন লিখতে পারেন। আমি এটি সম্পর্কে একটি বিস্তৃত উত্তর লিখতে চাই তবে কিছু লোক আপনার প্রশ্নটি বন্ধ করার সিদ্ধান্ত নিয়েছে তাই আমি পারব না। আমি এটি আবার খুলতে ভোট দিচ্ছি। যদি এটি আরও বেশি ভোট পেয়ে পুনরায় খোলা যায় তবে দয়া করে মন্তব্যে আমাকে উল্লেখ করুন।