পাইথন প্রোগ্রামিংয়ে মাল্টি-থ্রেডিং (Multi-threading) এবং মাল্টি-প্রসেসিং (Multi-processing) হলো একই সাথে একাধিক কাজ (Concurrency) করার দুটি ভিন্ন উপায়। ১. মাল্টি-থ্রেডিং (Multi-threading) বাস্তব উদাহরণ: আপনার রেস্টুরেন্টে একজন প্রধান শেফ (CPU/Process) আছেন এবং তার আন্ডারে ৪ জন অ্যাসিস্ট্যান্ট শেফ (Threads) আছেন। তারা সবাই একই রান্নাঘরে (Memory Space) কাজ করছেন। একজন সবজি কাটছেন, একজন মসলা পিসছেন, একজন মাংস ধুচ্ছেন। তারা একই উপাদান এবং থালা-বাসন শেয়ার করছেন। কীভাবে কাজ করে: এখানে একটি মাত্র মেইন প্রোগ্রাম বা প্রসেসের ভেতরে একাধিক "থ্রেড" বা ছোট ছোট কাজের ধারা তৈরি হয়। এরা সবাই কম্পিউটারের একই মেমোরি (RAM) শেয়ার করে। কোথায় ব্যবহার করবেন (I/O Bound Tasks): যখন আপনার প্রোগ্রামে এমন কাজ থাকে যেখানে CPU-কে বসে থাকতে হয় (যেমন: ইন্টারনেট থেকে ফাইল ডাউনলোড করা, ডেটাবেজ থেকে ডেটা আনা, বা ইউজারের ইনপুটের জন্য অপেক্ষা করা)। পাইথনের সীমাবদ্ধতা (GIL): পাইথনে GIL (Global Interpreter Lock) নামের একটি লক থাকে। এর কারণে মাল্টি-থ্রেডিং করলেও পাইথন একসাথে মাত্র একটি থ্রেডকেই CPU ব্যবহার করতে দ...
যেমন গুগল Keep, Notion, কিংবা WhatsApp— আমরা অফলাইনে অনেক সময় অনেক কিছু লেখি,, সেগুলো আবার অনলাইনে আসতেই কীভাবে সার্ভারের সাথে মিলিয়ে ফেলে। আসলে এর পেছনে কাজ করে Offline-First Architecture, Local Database, Sync Queue, এবং smart conflict resolution techniques। প্রথমে ব্যবহারকারী যেকোনো কিছু লিখলে বা অ্যাকশন নিলে অ্যাপ সেটিকে সরাসরি লোকাল ডাটাবেজে সেভ করে। মোবাইল অ্যাপগুলো সাধারণত SQLite/CoreData, আর ওয়েব অ্যাপগুলো IndexedDB বা Cache Storage ব্যবহার করে। এতে ইন্টারনেট না থাকলেও ব্যবহারকারী কাজ চালিয়ে যেতে পারে। অ্যাপ সবসময় ডিভাইসের নেটওয়ার্ক Status দেখে। অফলাইনে থাকলে সব পরিবর্তন Pending Sync Queue-তে জমা হয়। অনলাইনে ফিরলেই Background Sync চালু হয় একে একে সব pending changes সার্ভারে পাঠানো হয়। সার্ভার কোন অ্যাকশন গ্রহণ করলে তা লোকাল কিউ থেকে সরিয়ে ফেলা হয় এবং UI আপডেট হয়। WhatsApp-এর offline message sending বা Keep/Notion-এর offline note sync হওয়ার পেছনে এই প্রক্রিয়াই কাজ করে। খুব গুরুত্বপূর্ণ একটি বিষয় হলো conflict resolution। দুই ডিভাইস বা দুই ব্যবহারকারী যদি একই...