Skip to main content

Command Palette

Search for a command to run...

সিরিজ: কম্পিউটিংয়ে কনকারেন্সি – পর্ব ৩

Updated
•2 min read•View as Markdown
সিরিজ: কম্পিউটিংয়ে কনকারেন্সি – পর্ব ৩

"Concurrency vs. Parallelism: সত্যিকারের একসাথে কাজ করার গল্প"

আজ আমরা কীভাবে সত্যিকার অর্থে একই সময়ে একাধিক কাজ করা যায় সেটি সম্পর্কে জানব— যেটিকে বলা হয় Parallelism।


আমার দেখেছি concurrency মানে কী?

Concurrency = "একসাথে অনেক গুলো কাজ শুরু করে রেখে, একটার পর একটা করে কাজগুলো করতে থাকা"।

এটা অনেকটা এমন যে আপনি একাই একসাথে রান্না, কাপড় ধোয়া আর ফোনে কথা বলার কাজ হাতে নিয়েছেন। আপনি হয়তো একটুখানি রান্না করলেন, তারপর হঠাৎ গিয়ে ফোন ধরলেন, তারপর কাপড় ধুতে গেলেন। আপনি একা করলেও কাজগুলো একটার পর একটা সময় ভাগ করে করে করছেন।


এখন আসা যাক তাহলে Parallelism কী?

Parallelism = "একাধিক worker দিয়ে একই সময়ে একাধিক কাজ একসাথে করা", ।

রবার্ট পাইকের মতেঃ
"Concurrency is about dealing with lots of things at once, but parallelism is about doing lots of things at once"

এটা অনেকটা এমন—আপনার ঘরে তিনজন লোক আছেন। একজন রান্না করছে, একজন কাপড় ধুচ্ছে, আর একজন ফোনে কথা বলছে। তিনটি কাজ একই সময়ে, সমান্তরালে সম্পন্ন হচ্ছে। একে বলা হয় Parallel Execution।


বাস্তবে Parallelism কীভাবে সম্ভব হয়?

Parallelism বাস্তবায়নের জন্য মূলত দরকার হয় একাধিক প্রসেসর কোর বা CPU।

যখন কম্পিউটারে একাধিক কোর থাকে, তখন প্রতিটি কোর আলাদা আলাদা প্রসেস বা থ্রেড চালাতে পারে।

এটি একসাথে একাধিক কাজ করার প্রকৃত ফিজিক্যাল সক্ষমতা।
Modern CPU গুলোতে যেমন ৪-কোর, ৮-কোর বা ১৬-কোর থাকে, তেমনি cloud server বা HPC system-গুলোতে শত শত কোরের সাহায্যে একসাথে হাজার হাজার প্রসেস চালানো হয়।


Concurrency এবং Parallelism

আধুনিক সফটওয়্যার সিস্টেমে এই দুইটি ধারণা একসাথে ব্যবহৃত হয়।

Concurrency

  1. সময় ভাগ করে একাধিক কাজ করে

  2. যখন কোর কম, কিন্তু কাজ বেশি

  3. Responsiveness & Efficiency

  4. ফোনে কথা বলার সময় রান্না

Parallelism

  1. একসাথে একাধিক কাজ একাধিক কোরে

  2. যখন কোর বেশি এবং টাস্ক স্বাধীন

  3. Performance & Throughput

  4. রান্না ও কাপড় ধোয়া দুই জনে একসাথে করা


কখন কোনটা ব্যবহার করা হয়?

  • যদি আপনার সিস্টেমটি সিঙ্গেল কোরের হয় তবে আপনি কেবল Concurrency এর মাধ্যমে আপনার Process গুলোকে চালাতে পারবেন।

  • এবং যদি আপনার সিস্টেমটিতে মাল্টিকোর CPU থাকে তবে আপনি Concurrency + Parallelism—দুটো technique ই ব্যবহার করতে পারবেন।

Concurrency মূলত সফটওয়্যার ডিজাইন ও Scheduling টেকনিক, আর Parallelism নির্ভর করে হার্ডওয়্যার ক্ষমতার উপর।


কেন Parallelism গুরুত্বপূর্ণ?

  • এটি সময় বাঁচায়, রিসোর্সের সর্বোচ্চ ব্যবহার নিশ্চিত করে, এবং বেটার ইউজার এক্সপেরিয়েন্স প্রদান করে।

  • বড় বড় সফটওয়্যার যেমন ডেটাবেজ সার্ভার, ওয়েব সার্ভার, ভিডিও প্রসেসিং সিস্টেম—সবই Parallelism ব্যবহার করে।

  • বিশেষ করে Data-Intensive ও Compute-Intensive অ্যাপ্লিকেশনগুলো—যেমন:

    • Machine Learning

    • Real-Time Video Encoding

    • Scientific Simulations

এই কাজগুলোতে Parallelism ছাড়া কাজই হয় না।

More from this blog

Redis Data Structure

অনেকেই Redis-কে শুধু একটি key-value ডেটাবেস হিসেবে মনে করেন, কিন্তু এটি তার চেয়ে অনেক বেশি কিছু। Redis আমাদের এমন কিছু শক্তিশালী ডেটা স্ট্রাকচার দেয়, যা দিয়ে অনেক জটিল কাজ খুব সহজে এবং দ্রুত সমাধান করা যায়। চলুন, এক এক করে পরিচিত হওয়া যাক এদের সাথে। ...

Aug 18, 20253 min read4
Redis Data Structure

Redis এর প্রয়োজনীয়তা

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

Aug 17, 20254 min read2
Redis এর প্রয়োজনীয়তা

Redis: A speedy In-memory Database system

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

Aug 16, 20253 min read1
Redis: A speedy In-memory Database system

Class "static" Member in OOP

প্রোগ্রামিং-এর জগতে, ডেটা এবং ফাংশনগুলো কীভাবে মেমোরিতে রাখা হবে, তার উপর আমাদের কোডের কার্যকারিতা, speed এবং মেমোরি usage অনেকাংশে নির্ভর করে। এমন অনেক সময় আসে যখন আমরা চাই কিছু ডেটা বা ফাংশন যেনো কোনো নির্দিষ্ট ক্লাসের সব অবজেক্টের জন্য একটাই কপি ...

Aug 15, 20254 min read2
Class "static" Member in OOP

Object Oriented Programming Part -1

আপনি সফটওয়্যার বানানোর সময় প্রায়ই দু’টো বড় চ্যালেঞ্জের সম্মুখীন হবেন— প্রথম হলো complexity আর দ্বিতীয় হলো code changes। কোড যত বড় হয়, কোড বোঝো, চেঞ্জ করা, bug ফিক্স করা তত কঠিন হতে থাকে। Object-Oriented Programming (OOP) এমন এক programming style যেখা...

Aug 13, 20255 min read1
Object Oriented Programming Part -1

Thinking and Doing

22 posts