Dissection of Concurrency, Parallelism & Threading in Bangla

Nur Amin Sifat
3 min readAug 1, 2022

Concurrency, Parallelism, Threading অনেক জ্বালিয়ে মেরেছে তাই ভাবলাম এর একটা ব্যবচ্ছেদ দরকার। কম্পিউটার সাইন্সে এগুলোর ব্যবহার অনেক এবং যারা প্রোগ্রামার তারাও এই কনসেপ্টে আটকে যায়, শুধু মাত্র না বুঝার কারণে। কেননা এগুলো শুরু করার আগে কিছু গুরুত্বপূর্ণ প্রশ্ন মাথায় ঘুরপাক খেতে থাকে, যা অনেকটা কঠিন করে তুলে নতুনদের। তাই ভাবলাম এই প্রশ্ন গুলোর ব্যবচ্ছেদ করা দরকার আগে, প্রশ্নগুলো অনেকটা এরকম -

  1. Thread, Concurrency এবং Parallelism কি?
  2. আমরা কিভাবে Concurrency & Parallelism আলাদা করতে পারি?
  3. Thread এর ভূমিকা কি এদের সাথে?
  4. Asynchronous & synchronous এর সাথে এদের সম্পর্ক কি?

কনকারেন্সিঃ

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

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

প্যারালালিজম

কোন এপ্লিকেশনের প্যারালালিজম হচ্ছে এপ্লিকেশনের টাস্ক গুলোকে ছোট ছোট সাব টাস্কে আলাদা করা যাতে তারা একই সাথে কাজ করতে পারে, আর এক্ষেত্রে অবশ্যই মাল্টিপল কোর বা CPU থাকতে হবে। প্যারালালিজম সাধারণত মাল্টিপল কোর ব্যবহার করে একই সাথে অনেক গুলো কাজ করতে পারে। উপরের উদাহরণকে এক্ষেত্রে এভাবে ব্যবহার করতে পারি -

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

আবার প্যারালালিজমের ক্ষেত্রে অবশ্যই মাল্টিকোর থাকতে হবে, প্রাসঙ্গিক একটা বিষয় হচ্ছে সিংগেল কোরে কনকারেন্সি সম্ভব কিন্তু প্যারালালিজম সম্ভব না।

কনকারেন্সি ও প্যারালালিজমের মধ্যে সম্পর্ক কি?

প্যারালালিজম হচ্ছে বিশেষ একধরনের কনকারেন্সি যেটা একই সাথে কাজ করতে পারে।

কনকারেন্সি এবং প্যারালালিজমের পার্থক্যঃ

যখন কোন সিষ্টেমের বিভিন্ন কাজ একই সাথে প্রক্রিয়াধীন থাকে সেটা কনকারেন্সি, আর যখন কোন সিষ্টেমের কাজ একই সাথে ঘটে সেটা প্যারালালিজম। এখানে লক্ষ্যনীয় বিষয়টি হচ্ছে “প্রক্রিয়াধীন বা প্রোগ্রেস” এবং “কার্যকর করা বা এক্সিকিউট”। কনকারেন্সিতে একাধিক কাজ প্রোগ্রেসে থাকে একই সময়ে, প্যারালালিজমে একই সাথে এক্সিকিউট হয়।

এসিনক্রোনাস, সিনক্রোনাস বনাম কনকারেন্সি, প্যারালালিজমঃ

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

ধরেন, আপনি একজনকে একটা নির্দিষ্ট কাজ দিলেন, আরেকজনকে আরেকটা কাজ দিলেন এবং কাজ শেষে একটা ফিডব্যাক পেলেন সেটা হচ্ছে এসিনক্রোনাস।

আবার ধরেন আপনি একজনকে একটা কাজ দিয়েছেন যতক্ষননা সে কাজটা শেষ করছে ততোক্ষন অন্য কাউকে কাজটা দিতে পারবেন না, আপনাকে প্রথম জনের কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে অর্থাৎ পূর্ববর্তী কাজ ব্লকে রেখে যে পর্যন্ত না শেষ হয় ততোক্ষন অপেক্ষা করা, এটাকে বলে সিনক্রোনাস।

প্রত্যেকটা কিওয়ার্ড গুলো মাথায় রাখার চেষ্টা করতে হবে। আশা করি কিছুটা হলেও উপকারে আসবে।

--

--

Nur Amin Sifat

I'm a Associate Software Engineer at Brain Station 23 and Data Security learner as well.