থ্রেড পুল কখন ব্যবহৃত হয়?


104

সুতরাং নোড.জেএস কীভাবে কাজ করে তা সম্পর্কে আমার একটি ধারণা রয়েছে: এটির একটি একক শ্রোতার থ্রেড রয়েছে যা একটি ইভেন্টটি গ্রহণ করে এবং তারপরে এটি একটি কর্মী পুলকে অর্পণ করে। কর্মের থ্রেড শ্রোতাদের কাজটি একবার শেষ করার পরে অবহিত করে এবং শ্রোতা তারপরে কলারের প্রতিক্রিয়া ফিরিয়ে দেয়।

আমার প্রশ্নটি হ'ল: যদি আমি নোড.জেজে কোনও এইচটিটিপি সার্ভারে দাঁড়ায় এবং আমার কোনও রাউন্ডযুক্ত পথ ইভেন্টগুলিতে ঘুমের ডাক দেয় (যেমন "/ টেস্ট / স্লিপ"), পুরো সিস্টেমটি থামবে। এমনকি একক শ্রোতার থ্রেড। তবে আমার বোঝা ছিল যে এই কোডটি কর্মী পুলে ঘটছে।

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

নোড.জেএস কীভাবে শ্রোতার থ্রেড বনাম একটি থ্রেড পুল থ্রেড ব্যবহার করার সিদ্ধান্ত নিয়েছে? আমি কেন ইভেন্ট কোডটি লিখতে পারি না যা ঘুমায় এবং কেবল একটি থ্রেড পুলের থ্রেডটিকে ব্লক করে?


@ টবি - আমি এটি দেখেছি। এটি এখনও আমার প্রশ্নের উত্তর দেয় না। যদি কাজটি অন্য থ্রেডে থাকে তবে ঘুম কেবল সেই থ্রেডকেই প্রভাবিত করবে না শ্রোতাদেরও not
হ্যানি

8
একটি আসল প্রশ্ন, যেখানে আপনি নিজের দ্বারা কিছু বোঝার চেষ্টা করেন এবং যখন আপনি গোলকধাঁধার প্রস্থান খুঁজে পেতে পারেন না, আপনি সহায়তা চান ask
রাফায়েল আইং

উত্তর:


240

নোড কীভাবে কাজ করে তা আপনার বোঝা সঠিক নয় ... তবে এটি একটি সাধারণ ভ্রান্ত ধারণা, কারণ পরিস্থিতির বাস্তবতা আসলে মোটামুটি জটিল এবং সাধারণত "নোড সিঙ্গেল থ্রেডেড" এর মতো ছোট ছোট বাক্যাংশগুলিতে সাধারণভাবে সিদ্ধ করা হয় যা বিষয়গুলিকে অতি-সরল করে তোলে ।

এই মুহুর্তের জন্য, আমরা ক্লাস্টার এবং ওয়েবকর্ম থ্রেডের মাধ্যমে সুস্পষ্ট মাল্টি-প্রসেসিং / মাল্টি-থ্রেডিং উপেক্ষা করব এবং কেবল আদর্শ নন- থ্রেডযুক্ত নোডের বিষয়ে কথা বলব।

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

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

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


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

  • আপনার প্রকল্পে আপনি যে কোনও বাহ্যিক মডিউল অন্তর্ভুক্ত করেছেন যা নেটিভ সি ++ এবং লিবুভ ব্যবহার করে থ্রেড পুল ব্যবহার করার সম্ভাবনা রয়েছে (মনে করুন: ডাটাবেস অ্যাক্সেস)
  • লিবুভের একটি ডিফল্ট থ্রেড পুলের আকার 4 রয়েছে এবং থ্রেড পুলে অ্যাক্সেস পরিচালনা করতে একটি সারি ব্যবহার করে - আপশটটি হ'ল যদি আপনার কাছে একই সাথে 5 টি দীর্ঘ-চলমান ডিবি অনুসন্ধান থাকে তবে তার মধ্যে একটি (এবং অন্য কোনও অ্যাসিনক্রোনাস) থ্রেড পুলের উপর নির্ভর করে এমন ক্রিয়া) এমনকি এগুলি শুরু করার আগে সেই প্রশ্নগুলি শেষ হওয়ার অপেক্ষায় থাকবে
  • UV_THREADPOOL_SIZEথ্রেড পুলের প্রয়োজনীয়তা তৈরি এবং তৈরি হওয়ার আগে যতক্ষণ আপনি এটি করেন ততক্ষণ পরিবেশ পরিবর্তনশীলের মাধ্যমে থ্রেড পুলের আকার বাড়িয়ে আপনি এটিকে প্রশমিত করতে পারেন :process.env.UV_THREADPOOL_SIZE = 10;

আপনি যদি নোডে traditionalতিহ্যবাহী মাল্টি-প্রসেসিং বা মাল্টি-থ্রেডিং চান তবে আপনি এটি বিল্ট ইন clusterমডিউল বা অন্যান্য উল্লিখিত যেমন বিভিন্ন মডিউলগুলির মাধ্যমে পেতে পারেন webworker-threads, বা আপনি নিজের কাজটি ছড়িয়ে দেওয়ার কোনও উপায় প্রয়োগ করে এবং ম্যানুয়ালি ব্যবহার করে setTimeoutবা এটি নকল করতে পারেন setImmediateবা process.nextTickআপনার কাজটি বিরতি দিন এবং পরবর্তী প্রক্রিয়াটি শেষ করতে এটি চালিয়ে যান (তবে এটি প্রস্তাবিত নয়)।

দয়া করে মনে রাখবেন, আপনি জাভাস্ক্রিপ্টে দীর্ঘ চলমান / ব্লকিং কোড লিখছেন, আপনি সম্ভবত একটি ভুল করছেন। অন্যান্য ভাষা আরও দক্ষতার সাথে সম্পাদন করবে।


1
পবিত্র বোকা, এটি আমার জন্য এটি পুরোপুরি পরিষ্কার করে দেয়। আপনাকে অনেক ধন্যবাদ @ জেসন!
হ্যানি

5
কোনও সমস্যা নেই :) আমি নিজেকে খুঁজে পেয়েছি যেখানে আপনি খুব বেশি আগে ছিলেন না, এবং একটি সুসংজ্ঞায়িত উত্তরটি পাওয়া শক্ত ছিল কারণ একদিকে আপনার কাছে সি / সি ++ ডিভ রয়েছে যার উত্তর উত্তর সুস্পষ্ট এবং অন্যদিকে আপনার কাছে আদর্শ আছে ওয়েব ডেভস যারা এই ধরণের প্রশ্নের আগে খুব গভীরভাবে আবিষ্কার করেনি। আমি নিশ্চিত নই যে আমার উত্তরটি 100% প্রযুক্তিগতভাবে সঠিক যখন আপনি সি স্তরে নেমে যাবেন, তবে এটি ব্রড স্ট্রোকের মধ্যে সঠিক।
জেসন

3
নেটওয়ার্ক অনুরোধগুলির জন্য থ্রেড পুল ব্যবহার করা একটি বিশাল সংস্থান অপচয় হবে। এই প্রশ্ন অনুসারে "এটি থ্রেড পুল ছাড়াই এপল, কেকিউ এবং আইওসিপি হিসাবে বিভিন্ন প্ল্যাটফর্মের async I / O ইন্টারফেসের উপর ভিত্তি করে async নেটওয়ার্ক I / O করে" - যা বোঝায়।
ডেনিস ডলফাস

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

1
@ অ্যাবিড শ্রোতার থ্রেড কোনও ডাটাবেস কোয়েরি কার্যকর করে না, সুতরাং এই সমস্ত 10 টি কোয়েরিটি শেষ করতে মোটামুটি 6 সেকেন্ড লাগবে (4 এর ডিফল্ট থ্রেড পুলের আকার অনুসারে)। আপনার যদি জাভাস্ক্রিপ্টে এমন কোনও কাজ করার দরকার পড়ে যা ডেটাবেস ক্যোয়ারির ফলাফলগুলি সম্পন্ন করার প্রয়োজন হয় না, যেমন আরও অনুরোধ আসে যাতে থ্রেড পুল দ্বারা কোনও অ্যাসিনক্রোনাস কাজ সম্পন্ন করার প্রয়োজন হয় না, এটি মূলত কাজ চালিয়ে যাবে ইভেন্ট লুপ
জেসন

20

সুতরাং নোড.জেএস কীভাবে কাজ করে তা সম্পর্কে আমার একটি ধারণা রয়েছে: এটির একটি একক শ্রোতার থ্রেড রয়েছে যা একটি ইভেন্টটি গ্রহণ করে এবং তারপরে এটি একটি কর্মী পুলকে অর্পণ করে। কর্মের থ্রেড শ্রোতাদের কাজটি একবার শেষ করার পরে অবহিত করে এবং শ্রোতা তারপরে কলারের প্রতিক্রিয়া ফিরিয়ে দেয়।

এটি সত্যই সঠিক নয়। নোড.জেএস-তে কেবল একটি একক "কর্মী" থ্রেড রয়েছে যা জাভাস্ক্রিপ্ট কার্যকর করে। নোডের মধ্যে এমন থ্রেড রয়েছে যা আইও প্রসেসিং পরিচালনা করে তবে এগুলিকে "শ্রমিক" হিসাবে ভাবা একটি ভুল ধারণা। সত্যিই কেবল আইও হ্যান্ডলিং এবং নোডের অভ্যন্তরীণ বাস্তবায়নের কয়েকটি অন্যান্য বিবরণ রয়েছে তবে একজন প্রোগ্রামার হিসাবে আপনি কয়েকটি বিবিধ পরামিতি যেমন MAX_LISTENERS ব্যতীত তাদের আচরণকে প্রভাবিত করতে পারবেন না।

আমার প্রশ্নটি হ'ল: যদি আমি নোড.জেজে কোনও এইচটিটিপি সার্ভারে দাঁড়ায় এবং আমার কোনও রাউন্ডযুক্ত পথ ইভেন্টগুলিতে ঘুমের ডাক দেয় (যেমন "/ টেস্ট / স্লিপ"), পুরো সিস্টেমটি থামবে। এমনকি একক শ্রোতার থ্রেড। তবে আমার বোঝা ছিল যে এই কোডটি কর্মী পুলে ঘটছে।

জাভাস্ক্রিপ্টে ঘুমের কোনও ব্যবস্থা নেই। আপনি "ঘুম" বলতে কী বোঝেন তার কোড স্নিপেট যদি পোস্ট করেন তবে আমরা এটি আরও দৃ concrete়তার সাথে আলোচনা করতে পারি। time.sleep(30)উদাহরণস্বরূপ পাইথনের মতো কিছু অনুকরণ করার জন্য কল করার মতো কোনও ফাংশন নেই । setTimeoutমূলত ঘুম নেই এমন কিছু আছে । setTimeoutএবং setIntervalস্পষ্টভাবে প্রকাশ করুন , অবরুদ্ধ নয়, ইভেন্ট লুপ যাতে কোডের অন্যান্য বিটগুলি মূল সম্পাদন থ্রেডে কার্যকর করতে পারে। কেবলমাত্র আপনি যা করতে পারেন তা হল ইন-মেমরি গণনা সহ সিপিইউতে ব্যস্ত লুপ, যা প্রকৃতপক্ষে মূল সম্পাদন থ্রেডে অনাহার করবে এবং আপনার প্রোগ্রামটিকে প্রতিক্রিয়াহীনভাবে রেন্ডার করবে।

নোড.জেএস কীভাবে শ্রোতার থ্রেড বনাম একটি থ্রেড পুল থ্রেড ব্যবহার করার সিদ্ধান্ত নিয়েছে? আমি কেন ইভেন্ট কোডটি লিখতে পারি না যা ঘুমায় এবং কেবল একটি থ্রেড পুলের থ্রেডটিকে ব্লক করে?

নেটওয়ার্ক আইও সর্বদা অবিচ্ছিন্ন থাকে। গল্পের শেষে. ডিস্ক আইওতে উভয় সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস এপিআই রয়েছে, সুতরাং কোনও "সিদ্ধান্ত" নেই। নোড.জেএসগুলি আপনি যে সিআইঙ্ক বনাম সাধারণ অ্যাসিঙ্ক কল করেন সেই API কোর ফাংশন অনুসারে আচরণ করবে। যেমন: fs.readFileবনাম fs.readFileSync। শিশু প্রক্রিয়াগুলির জন্য পৃথক child_process.execএবং child_process.execSyncএপিআইও রয়েছে।

থাম্বের বিধি সর্বদা অ্যাসিনক্রোনাস এপিআই ব্যবহার করে। সিঙ্ক এপিআইগুলি ব্যবহারের বৈধ কারণগুলি কোনও সংযোগের জন্য শোনার আগে কোনও নেটওয়ার্ক পরিষেবাতে বা সাধারণ স্ক্রিপ্টগুলিতে যে বিল্ডিং সরঞ্জাম এবং সেই ধরণের জিনিসগুলির জন্য নেটওয়ার্কের অনুরোধগুলি গ্রহণ করে না তা আরম্ভের কোডের জন্য।


1
এই এসিনক্রোনাস এপিআইগুলি কোথা থেকে আসছে? আপনি যা বলছেন আমি তা পেয়েছি তবে যে কেউ এই এপিআইগুলি লিখেছিল সে IOCP / async এ বেছে নিয়েছে। তারা কীভাবে এটি করতে বেছে নিয়েছিল?
হ্যানি

3
তাঁর প্রশ্ন কীভাবে তিনি নিজের সময় নিবিড় কোড লিখবেন এবং ব্লক করবেন না।
জেসন

1
হ্যাঁ. নোড বেসিক ইউডিপি, টিসিপি এবং এইচটিটিপি নেটওয়ার্কিং সরবরাহ করে। এটি কেবলমাত্র অ্যাসিক্রোনাস "পুল ভিত্তিক" এপিআই সরবরাহ করে। ব্যতিক্রম ছাড়াই বিশ্বের সমস্ত নোড.জেএস কোডগুলি এই পুল-ভিত্তিক অ্যাসিনক্রোনাস এপিআইগুলি ব্যবহার করে যেগুলি কেবল সহজলভ্য। ফাইল সিস্টেম এবং শিশু প্রক্রিয়াগুলি আলাদা গল্প, তবে নেটওয়ার্কিং ধারাবাহিকভাবে অ্যাসিনক্রোনাস হয়।
পিটার লিয়নস

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

2
নোড আইও এর জন্য থ্রেড পুল ব্যবহার করে না, এটি নেটিভ অ-ব্লকিং আইও ব্যবহার করে, একমাত্র ব্যতিক্রম fs, যতদূর আমি জানি
ভুকুরচ্যাটকিন

2

থ্রেড পুল কীভাবে এবং কখন ব্যবহার করত:

প্রথমে যখন আমরা কোনও কম্পিউটারে নোড ব্যবহার / ইনস্টল করি তখন এটি অন্যান্য প্রক্রিয়াগুলির মধ্যে একটি প্রক্রিয়া শুরু করে যা কম্পিউটারে নোড প্রক্রিয়া নামে পরিচিত এবং এটি হত্যা না করা অবধি এটি চলতে থাকবে। এবং এই চলমান প্রক্রিয়াটি আমাদের তথাকথিত একক থ্রেড।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং একক থ্রেডের প্রক্রিয়াটি নোড অ্যাপ্লিকেশনটিকে ব্লক করা সহজ করে তবে নোড.জেএসটি টেবিলে নিয়ে আসে এমন এক অনন্য বৈশিষ্ট্য। সুতরাং, আবার আপনি যদি আপনার নোড অ্যাপ্লিকেশনটি চালান তবে এটি কেবল একটি একক থ্রেডে চলবে। আপনার 1 বা মিলিয়ন ব্যবহারকারী একই সাথে আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেস করছে কিনা তা বিবেচ্য নয়।

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

এর পরে, সমস্ত মডিউল কোড কার্যকর হয়ে তারপরে সমস্ত কলব্যাক নিবন্ধন করুন, শেষ পর্যন্ত, আপনার অ্যাপ্লিকেশনের জন্য ইভেন্ট লুপ শুরু হয়েছিল।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমরা আলোচনা করার আগে সেই সমস্ত ফাংশনের অভ্যন্তরে সমস্ত কলব্যাক ফাংশন এবং কোডগুলি ইভেন্ট লুপের আওতায় কার্যকর হবে। ইভেন্টের লুপে, লোডগুলি বিভিন্ন পর্যায়ে বিতরণ করা হয়। যাইহোক, আমি এখানে ইভেন্ট লুপ সম্পর্কে আলোচনা করতে যাচ্ছি না।

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

সুতরাং থ্রেড পুলটি নোডেজের নিজেই একটি অংশ নয়, এটি লিবুভ দ্বারা লিবুবকে ভারী শুল্ক অফলোড করার জন্য সরবরাহ করা হয়েছে, এবং লিবুভ সেই কোডগুলি তার নিজস্ব থ্রেডগুলিতে কার্যকর করবে এবং মৃত্যুদন্ড কার্যকর করার পরে লিবুভ ইভেন্টের লুপটিতে ইভেন্টটিতে ফলাফলগুলি ফিরিয়ে দেবে।

এখানে চিত্র বর্ণনা লিখুন

থ্রেড পুল আমাদের চারটি অতিরিক্ত থ্রেড দেয়, সেগুলি মূল একক থ্রেড থেকে সম্পূর্ণ পৃথক। এবং আমরা এটি পর্যন্ত 128 থ্রেড পর্যন্ত কনফিগার করতে পারি।

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

মজাদার অংশটি হ'ল পর্দার আড়ালে স্বয়ংক্রিয়ভাবে ঘটে। এটি আমাদের বিকাশকারীরা নয় যাঁরা সিদ্ধান্ত নেন যে থ্রেড পুলে কী যায় এবং কী হয় না।

থ্রেড পুলে অনেকগুলি কাজ রয়েছে যেমন

-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups

0

এই ভুল বোঝাবুঝি কেবল প্রাক-নিয়োগমূলক মাল্টি টাস্কিং এবং সমবায় মাল্টিটাস্কিংয়ের মধ্যে পার্থক্য ...

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

... সুতরাং এটি ব্লক করবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.