सामग्री पर जाएं
मॉड्यूल 7

कंकरेंसी (Concurrency)

सही और कुशल मल्टीथ्रेडेड C++ लिखना सीखें — थ्रेड, सिंक्रोनाइज़ेशन, एटॉमिक और पैरेलल एल्गोरिदम।

थ्रेड और सिंक्रोनाइज़ेशन (Threads & Synchronization)

  1. std::thread, std::jthread और थ्रेड मैनेजमेंट

    std::thread और C++20 के std::jthread से थ्रेड बनाना और उन्हें मैनेज करना सीखें। join बनाम detach, स्टॉप टोकन के साथ सहयोगी कैंसलेशन (cooperative cancellation), थ्रेड-लोकल स्टोरेज और थ्रेड की सीमाओं के पार एक्सेप्शन हैंडलिंग को समझें।

  2. म्यूटेक्स, लॉक और क्रिटिकल सेक्शन

    सिंक्रोनाइज़ेशन प्रिमिटिव में महारत हासिल करें: mutex, lock_guard, unique_lock, scoped_lock, shared_mutex। साझा डेटा की सुरक्षा करना, डेडलॉक रोकना, और डेटा रेस तथा रेस कंडीशन के बीच का अंतर समझना सीखें।

  3. कंडीशन वेरिएबल और प्रोड्यूसर-कंज़्यूमर

    थ्रेड के बीच कुशलता से तालमेल बिठाने के लिए कंडीशन वेरिएबल का उपयोग करें। थ्रेड-सेफ़ प्रोड्यूसर-कंज़्यूमर क्यू बनाएँ, स्प्यूरियस वेकअप सँभालें, और लॉस्ट वेकअप की समस्या से बचें।

Async, एटॉमिक और पैरेललिज़्म (Async, Atomics & Parallelism)

  1. std::async, std::future और std::promise

    उच्च-स्तरीय कंकरेंसी एब्स्ट्रैक्शन का उपयोग करें: std::async से असिंक्रोनस टास्क लॉन्च करें, std::future से नतीजे पाएँ, और std::promise से वैल्यू या एक्सेप्शन मैन्युअली सेट करें।

  2. एटॉमिक ऑपरेशन और मेमोरी ऑर्डरिंग

    std::atomic के साथ लॉक-फ़्री प्रोग्रामिंग को समझें। मेमोरी ऑर्डरिंग (relaxed, acquire, release, seq_cst) में महारत हासिल करें, atomic_flag से स्पिनलॉक बनाएँ, और compare-and-swap (CAS) पैटर्न सीखें।

  3. पैरेलल एल्गोरिदम और एक्ज़ीक्यूशन पॉलिसी

    सॉर्टिंग, ट्रांसफ़ॉर्मेशन और रिडक्शन को एक्ज़ीक्यूशन पॉलिसी के साथ पैरेलल करने के लिए C++17 पैरेलल STL का लाभ उठाएँ। समझें कि पैरेललिज़्म कब मदद करता है, Amdahl का नियम, और व्यावहारिक थ्रेड पूल डिज़ाइन।