तो 20000 थ्रेड स्पॉन करते हैं और 20000 थ्रेड यहां पर स्पॉन करते हैं और देखते हैं कि अपना बफर कैसे बिहेव करता है वह हमारी बफर की कैपेसिटी 10 है जबकि उसमें 20000 प्रोड्यूसर प्रोड्यूस कर रहे हैं और 20000 कंज्यूमर कंज्यूम कर रहे हैं हां जी कैसे हो सब सो वेलकम बैक टू आवर न्यू वीडियो ऑफ अप्लाइड ऑपरेटिंग सिस्टम एंड थैंक्स फॉर द लव दैट यू आर गिविंग टू आवर प्रीवियस वीडियोस बहुत मजा आ रहा है मुझे यह सब वीडियोस बनाने में और आप इंटरेस्ट दिखा रहे हो ऐसी वीडियोस में जहां पे काफी डिटेल में हम बात कर रहे हैं तो अच्छा लग रहा है राइट तो आई विड रिक्वेस्ट कि आप शेयर करते जाओ वीडियोस को तो ताकि हम आने वाली प्लेलिस्ट जो कि है बिल्ड योर ओन रेडीस इन c+ प वो हम फ्री ला पाए राइट अगर लाइक्स और इनफ कमेंट्स आते हैं तो मन करता है और फ्री कंटेंट लाने का राइट तो आज का जो टॉपिक है वो होगा हमारा सेमफोर्स टेक्स कंडीशनल वेरिएबल सब का सब इंटरव्यू के लिए बहुत इंपॉर्टेंट है और आपकी सीएस फंडामेंटल्स के पॉइंट ऑफ व्यू से भी काफी इंपॉर्टेंट है राइट तो हमने पिछली वीडियो में देखा था कॉन्करेंस के डिफरेंट डिफरेंट प्रिंसिपल्स कि आप म्यूचुअल एक्सक्लूजन कैसे अचीव करते हो मोस्ट ऑफ द टेक्निक्स हमने देखी थी वो थी बिजी एंड वेट जो कि हमारे सीपीयू साइकिल वेस्ट करता है राइट फिर हमने अपना जो पिछला वीडियो था वो एंड किया था यहां पे कि हम अगले वीडियो में देख रहे होंगे वेट एंड सिग्नल अप्रोच जहां पे आपका कोई भी प्रोसेस स्लीप होके वाइल लूप नहीं चलाते रहता राइट आपका सीपीयू साइकिल कंज्यूम नहीं करते रहता कंटीन्यूअसली जब वो स्लीप होता है ठीक है तो उसको हमने बोला था वेट एंड सिग्नल अप्रोच तो वो आज हम देख रहे होंगे उसको कोड कर रहे होंगे प्रोड्यूसर कंज्यूमर प्रॉब्लम को देख रहे होंगे उसको कोड कर रहे होंगे तो काफी इंटरेस्टिंग है वीडियो आज की शुरू से एंड तक देखना लाइक अभी के अभी मार दो ठीक है बिना किसी टाइम वेस्ट के हम स्टार्ट करते हैं हां जी तो आज का टॉपिक सारे जैसा कि मैंने पहले ही बोला कि इंटरव्यू के पर्सपेक्टिव से काफी इंपोर्टेंट है सो लेट्स स्ट विद प्रोड्यूसर कंज्यूमर प्रॉब्लम और पिछली वीडियो में हमने एक प्रोजेक्ट बनाया था पैरेलल फाइल इंक्रिप्टर राइट पैरेलल फाइल इंक्रिप्टर हमने बनाया था सो दैट प्रोजेक्ट इज बेसिकली अ प्रोजेक्ट जो हम आगे लेक चलेंगे ठीक है व मैंने इसलिए बनाया था एक ऐसा प्रोजेक्ट मुझे चाहिए था जो कि मेरे आने वाले जितने भी कांसेप्ट है उसको अप्लाई कर सके देखो अगर आप बहुत कुछ सीख रहे हो ना और अप्लाई कुछ भी नहीं कर रहे देन आपके माइंड में वो कभी नहीं बैठेगा ठीक है सो दैट्ची है हम जो भी सीख रहे हैं हम अभी सेमफोर सीखेंगे हम अभी मूटेक सीखेंगे कंडीशनल वेरिएबल सीखेंगे हमने पहले मल्टी प्रोसेसिंग में चाइल्ड प्रोसेस कैसे बनते हैं वो देखा था राइट तो ये सब हम फाइल इंक्रिप्टर में अपने डाल रहे होंगे और ऐसा नहीं है कि डाल के बस गिट अप पे डाल दिया हम उसका टाइम भी कंपेयर कर रहे होंगे कि कौन सी अप्रोच कम टाइम ले रही है कौन सी ज्यादा ले रही है और उसके पीछे एक लॉजिक होगा क्यों ऐसा हो रहा है जो आपने जितना भी सीखा उससे आप उसको जस्टिफाई कर पाओगे कि क्यों भाई ऐसा हो रहा है राइट तो वो सब प्रोजेक्ट हम धीरे-धीरे उसको और बिल्ड करेंगे और फिर मेरा प्लान है कि अगर आप ऐसे सपोर्ट दिखाते रहे तो मैं उसका यूआई भी बनाऊंगा जहां से आप अपना पूरा का पूरा फोल्डर अपलोड कर पाओ और बैक एंड में आपका c+ प् से वो सारी फाइल्स एंक्रिप्ट होके आ जाए मेरा यह प्लान है बट लेट्स सी कि आप कैसे अगर सपोर्ट करते हो तो वी विल डू दैट सो लेट्स स्टार्ट टुडेज वीडियो सो बेसिकली हमने जो देखा था हमने देखा था बिजी वेटिंग ठीक है जब भी कोई थ्रेड को लॉक नहीं मिलता या फिर कोई भी थ्रेड अगर क्रिटिकल सेक्शन के अंदर एंटर होना चाहता है बट वो नहीं हो पाता तो वो बिजी वेट करता था राइट बिजी वेट तो बिजी वेट में दिक्कत ये है कि वो वाइल लूप रन करते रहता है वो कुछ ना कुछ चीज चेक करते रहता है तो उसमें हमारा सीपीयू के साइकल वेस्ट होते हैं राइट अगर आपको पता हो अगर आपका सीपीयू लेट्स सपोज लेट्स सपोज एक मेगाहर्ट्ज का है या फिर 1 हर्ट्ज का है तो आपको पता है कि फ्रीक्वेंसी के साइकल्स होते हैं राइट ऐसे साइकल्स होते हैं तो आपकी कितनी कैलकुलेशन होंगी एक सेकंड में उसको बोलते हैं फ्रीक्वेंसी तो आप का अगर 2 गगा हर्ट्ज का है तो 2 * गगा * हर्ट्ज राइट तो ऐसे-ऐसे आपके सीपीयू साइकिल यूज होते हैं कोई भी इंस्ट्रक्शन रन करने के लिए तो जब आप वा लूप चलाते हो वा लूप का बेसिकली मतलब यह है x इज नॉट इक्वल टू 0 जब तक x 0 नहीं हो जाता तब तक लूप चलता रहेगा इसका मतलब सिंपल सा है कि x को मेमोरी से उठाना x को मेमोरी से उठा के सीपीयू के रजिस्टर तक लेके आना और फिर उसकी वैल्यू चेक करना तो एक ये इंस्ट्रक्शन है ये सीपीयू के साइकल्स को यूज करती है तो थ्रेड जब कोई स्लीप हो जाता है और वो सीपीयू के साइकिल को यूज़ कर रहा है देन इट्स नॉट अ गुड अप्रोच तो हमने लास्ट टाइम देखा था टीएसएल तो मैं आपको रिकप करवा देता हूं टीएसएल इज नथिंग बट टेस्ट एंड सेट लॉक जो कि क्या करता है जो कि एक ग्लोबल होता है अगर आपके चार सीपीयू भी हैं सीपीयू के चार कोर भी है मतलब चार सीपीयू हैं तो वो क्या करेगा वो सीपीयू वाइड ग्लोबल लॉक लेगा एक मेमोरी में जाएगा टीएसएल इंस्ट्रक्शन हार्डवेयर इंस्ट्रक्शन है जो कि एक सीपीयू रन करता है वो एक मेमोरी में जाता है वहां से एक लॉक वेरिएबल लेके आता है और पूरी की पूरी मेमोरी को बोलता है कि भाई इस वाले ब्लॉक को कोई एक्सेस नहीं कर सकता जब तक लोग सेट है ठीक है तो टीएसएल एक वन ऑफ द मेथड है उसके बाद आप और भी चीजें देख सकते हो फ्यू टेक्स देख सकते हो टेक्स हम देखेंगे फूटेक्स भी होता है और भी काफी चीजें हैं हार्डवेयर रिलेटेड जो कि आपकी चीजें टोमी सिटी और यह सब अचीव करने में हेल्प करती हैं आगे देखेंगे प्रोड्यूसर कंज्यूमर क्या है प्रोड्यूसर कंज्यूमर का मतलब यह है कि एक मेरे पास बफर है यह क्यू भी हो सकती है यह एक एरे भी हो सकता है कुछ भी हो सकता है उसमें एक मेरा प्रोग्राम यह प्रोग्राम भी हो सकता है अगेन मैं आपको पिछली वीडियो में भी बताया था किसी को प्रोग्राम कहने का मतलब यह है कि वह एक प्रोसेस बन जाएगा जब भी वह रन होगा रनिंग प्रोग्राम इज अ प्रोसेस तो ये एक प्रोसेस भी हो सकता है और ये एक थ्रेड भी हो सकता है ये हमने पहले भी देखा था कि अ प्रोसेस एंड थ्रेड मैं हमेशा इक्विवेलेंट यूज करूंगा तो प्रोड्यूसर मतलब एक थ्रेड लेट्स सपोज अगर कुछ जनरेट कर रहा है लेट्स सपोज आइटम पुश कर रहा है 1 2 3 इंटी जर पुश कर रहा है कंज्यूमर उसको कंज्यूम कर रहा है 1 23 इसमें प्रॉब्लम यह है कि अगर बफर की कैपेसिटी 20 इंटी जर स्टोर करने की है और मेरे प्रोड्यूसर ने एक से लेकर 20 सारे इसमें स्टोर कर दिए और कंज्यूमर ने अभी तक कुछ कंज्यूम नहीं किया है तो बफर मेरा हो जाएगा फुल और फिर 21वीं इंस्ट्रक्शन इसको जनरेट करने से पहले बफर चेक करना पड़ेगा कि भाई बफर फुल है या नहीं सेम कंज्यूमर है कि अगर बफर में कोई भी आइटम नहीं है जीरो आइटम है तो कंज्यूमर को चेक करना पड़ेगा कि भाई बफर एमटी है या नहीं तो बफर क्या है यह सारे थ्रेड्स अगर यहां पे p1 प्रोड्यूसर p2 प्रोड्यूसर p3 मल्टीपल थ्रेड इस बफर में डालें और मल्टीपल कंज्यूमर हो c1 c2 c3 जिन्होंने हमारी काफ का वाली वीडियो देखी उनको पता होगा कि काफ का में भी हम कुछ ना कुछ या फिर क्यूज में भी हम ऐसे पुश करते हैं और कंज्यूम करते हैं मल्टीपल प्रड्यूसर एंड कंज्यूमर हो सकते हैं बट इसमें कैविट यह है कि यह जो आपका यह डाटा स्ट्रक्चर है ना यह एक शेयर्ड डाटा स्ट्रक्चर है शेयर डाटा स्ट्रक्चर जब भी होता है मैंने आपको बोला था और उसको मल्टीपल लोग एक्सेस कर रहे हैं दैट इज योर क्रिटिकल सेक्शन मतलब एक वो वाली चीज जहां पर रेस कंडीशन आ सकती है जहां पर डेड लोक आ सकता है जहां पे कुछ भी पॉसिबिलिटी हो सकती है अनसर्टेन बिहेवियर हो सकता है दैट इज योर रेस कंडीशन तो यह सबसे पहला शेड बफर है इसलिए ये एक प्रोड्यूसर कंज्यूमर प्रॉब्लम इसलिए सामने आती है क्योंकि इसमें बहुत सारी प्रॉब्लम है सबसे पहली कि शेयर्ड डाटा स्ट्रक्चर को प्रोटेक्ट करना सबसे पहला यह दूसरा एक डेड लॉक काइंड ऑफ सिचुएशन में ना चले जाना वो मैं अभी आपको एक्सप्लेन करूंगा क्या प्रोड्यूसर कंज्यूमर एक ऐसी फंडामेंटल प्रॉब्लम है जिसका यूज करके हमारी सिंक्रोनाइजेशन एंड डेड लॉक यह सबको अवॉइड करते हैं रेस कंडीशन हियर इज आल्सो पॉसिबल डिस्पाइना ये मान लेते हैं कि जब भी हम स्लीप यूज करते हैं तो एक एटॉमिक कॉल है मतलब इसके जब भी स्लीप हो रहा होगा ये थ्रेड उसके बीच में कांटेक्ट स्विच नहीं होगा कोई और थ्रेड रन नहीं होगा ठीक है मान लेते हैं तो प्रोड्यूसर कंज्यूमर प्रॉब्लम का ये सिंपल सा कोड है जिसको हम आगे भी कर रहे होंगे इसको मैंने इसलिए नहीं किया क्योंकि ये बहुत सिंपल है ठीक है इसमें कुछ भी नहीं है बफर की वैल्यू उन्होंने बोल दी कि 100 आइटम्स हम प्रोड्यूस कर सकते हैं काउंट जीरो रखा उन्होंने नंबर ऑफ आइटम्स जो अभी बफर में उसका काउंट रखा प्रोड्यूसर में सिंपल ये है सबसे पहले वाइल लूप चलाएगा वो ठीक है प्रोड्यूस आइटम करता जाएगा करता जाएगा करता जाएगा जैसे ही उसने बफर फुल कर दिया उसके बाद स्लीप सिस्टम कॉल कॉल हो जाएगी लेट्स सपोज स्लीप एक कॉल है जो आपके करंट थ्रेड को स्लीप कर देती है यहां पे आप स्लीप हो गए अब वो तब तक स्लीप रहेगा जब तक उसका बफर लेट्स सपोज बफर में 100 आइटम्स है अब जब 99 हो जाएंगी तभी वो प्रोड्यूसर एक और प्रोड्यूस कर पाएगा ठीक है तो अभी वो स्लीप हो गया अभी ये स्लीप हो गया अभी इसको कुछ प्रोड्यूस नहीं करना है अब कंज्यूमर कंज्यूम करेगा कंज्यूमर कंज्यूम करता जाएगा करता जाएगा करता जाएगा और जैसे ही उसका काउंट यहां पे आके आप देखो काउंट कितना हो गया n -1 इफ काउंट = n - 1 इसका मतलब कि अगर पहले 100 था और अभी काउंट 99 हो गया तो इसका मतलब n -1 हो गया तो इसका मतलब पहले बफर फुल था अब बफर फुल था अब n -1 हो गया इसका मतलब बफर में एक आइटम डालने की जगह है ठीक है तो यह क्या करेगा यह जैसे ही n -1 पे पहुंचेगा प्रोड्यूसर को बोलेगा भाई एक और आइटम डाल दे अब प्रोड्यूसर जहां पर स्लीप हुआ था वो बोलेगा अब उसको वेक अप किसे क्या होगा कि वह जो थ्रेड था प्रोड्यूसर का वह दोबारा जगेगा दोबारा एक इंसर्ट आइटम करेगा काउंट को दोबारा क्या कर देगा 100 ठीक है तो यह इंसर्ट करेगा आइटम ठीक है काउंट को कर देगा काउंट प्व वच इज 100 अब ये यहां पे देखे काउंट वन है नहीं है अब दोबारा ये यहां पे जाएगा और वहां पे देखा कि भाई ये मैं तो दोबारा मैंने इसको पूरा फुल कर दिया अब दोबारा प्रोड्यूसर स्लीप हो जाएगा ठीक है और फिर दोबारा कंज्यूमर जाएगा कंज्यूमर जो आप दोबारा आपका स्लीप होगा कंज्यूमर दोबारा चलेगा ठीक है और यह चलता रहेगा तो बेसिकली आप इसको देख सकते हो यहां पे कमेंट में लिखे हुए हैं कैसे-कैसे हो रहा है मैं आपको बता देता हूं यहां पे रेस कंडीशन कैसे आएगी फिर उसको हम सॉल्व करेंगे ठीक है और फिर आपको इंपॉर्टेंट इंपोर्टेंट चीजें बताऊंगा जो इंटरव्यू में पूछी जाती है तो वो बोलता है लेट्स से काउंट जीरो है मतलब आपका बफर मतलब कुछ भी नहीं है उसमें कंज्यूमर रीड करता है काउंट एज जीरो यहां पे आ जाता है काउंट जीरो ठीक है जस्ट बिफोर गोइंग टू स्लीप जैसे ही उसने काउंट रीड किया स्लीप सिस्टम कॉल एक स्लीप एक सिस्टम कॉल है जो एटॉमिक है मतलब जब मैं स्लीप कॉल कर देता हूं उसके बाद वो एनटायर स्लीप हो जाएगा बट मैंने क्या बोला जस्ट बिफोर गोइंग टू स्लीप जब मैंने इफ किया काउंट इज इक्वल टू 1 जब मैंने काउंट इ इक्व ट 0 चेक किया और यहां पे स्लीप कंडीशन है जैसे ये कंडीशन रन होने वाली थी यहीं पे कांटेक्ट स्विच हो गया ठीक है यहीं पे कांटेक्ट स्विच हो गया अब इसके लिए तो काउंट जीरो था और जैसे ही रन करने वाला था कांटेक्ट स्विच हो गया अब प्रोड्यूसर में जाएंगे हम नाउ प्रोड्यूसर विल प्रोड्यूस अब प्रोड्यूसर काउंट वन से इंक्रीज करेगा प्रोड्यूस करेगा ठीक है फिर वो देखेगा कि काउंट वन हो गया यहां पे ठीक है वो देखेगा काउंट वन हो गया इट मींस कि बफर पहले एमटी था अभी काउंट वन हुआ है इसका मतलब पहले एमटी था इसलिए हेंस इट विल ट्राई टू वेक अप द कंज्यूमर अब यहां पर वो क्या बोलेगा कि भाई मैंने एक आइटम डाल दिया प्लीज अपना काम कंटिन्यू कर लेकिन जो उसका काम कंटिन्यू होगा ना वो होगा यहां से अब कंज्यूमर बोलेगा मैंने तो देख पहले काउंट पढ़ा था वो जीरो था इसलिए मैं अब स्लीप होने वाला हूं जो तूने मेरे को पहले नहीं होने दिया अब ये सो जाएगा ठीक है कंज्यूमर वाज नॉट स्लेप्ड बेसिकली जो इसने वेकअप कॉल मारी यह कंज्यूमर के लिए लॉस्ट कॉल हो जाएगी क्योंकि वो कभी स्लीप हुआ ही नहीं था वो अब जाके स्लीप होगा सो कंज्यूमर वाज नॉट स्लेप्ट एज वी नो सो नाउ इट विल गो टू स्लीप एट द टाइम वेरी फर्स्ट काउंट कंज्यूमर रीड वाज जीरो मतलब वो बोल रहा है कि जब पहली बार उसने काउंट पढ़ा था वो जीरो था उसके बाद कांटेक्ट स्विच हो गया था अब वो स्लीप हो गया है नाउ चाइल्ड विल स्लीप ठीक है अब चाइल्ड स्लीप हो गया यहां पे यहां पे ओके अब प्रोड्यूसर आएगा प्रोड्यूसर बोलेगा भाई क्योंकि अभी आइटम कंज्यूम नहीं हुई है जो उसने प्रोड्यूस की थी कंज्यूम नहीं हुई है वो देखेगा कि भाई क्या काउंट एन हुआ है नहीं हुआ तो एक और प्रोड्यूस करेगा एक और प्रोड्यूस करेगा प्रोड्यूस करता जाएगा जब तक काउंट एन नहीं हो जाता जैसे ही उसने पूरा का पूरा बफर फुल कर दिया वो खुद स्लीप पर चला जाएगा नाउ प्रोड्यूसर विल से आई एम स्लीपिंग आई एम स्लीपिंग मैंने पूरा बफर फुल कर दिया n आइटम्स तक प्लीज मुझे उठा देना जब इसमें n n से कम आइटम हो जाएंगी कंज्यूमर बोलेगा ठीक है उठा तो दूंगा बट मैं भी सो रहा हूं बिकॉज़ कंज्यूमर का कांटेक्ट स्विच जब हुआ था उसके लिए काउंट जीरो था और अब दोबारा उसका जब कांटेक्ट वापस आया तो वह स्लीप उसने कॉल कर दिया अब दोनों एक दूसरे का वेट कर रहे हैं इसी को बोलते हैं हम काइंड ऑफ डेड ल डेड लॉक सिचुएशन काइंड ऑफ ठीक है क्योंकि यहां पे कोई लॉक एक्वायर नहीं किया इसलिए मैं आपको बोल रहा हूं काइंड ऑफ बट डेड लॉक भी यही होता है एक दूसरे को बोलता है कि भाई तूने लॉक एक्वायर कर रखा है छोड़ना तब मैं लूंगा और दूसरा बोलता है तूने क्वायर कर रखा है छोड़ना तब लूंगा यहां पे भी यही है प्रोड्यूसर बोल रहा है तू मुझे वेकअप करना तब मैं अपने प्रोड्यूस करूंगा एन आइटम्स तक कंज्यूमर बोलता है तू मुझे वेक अप करना जब तूने पूरी की पूरी आइटम्स प्रोड्यूस कर दी हो दोनों के दोनों एक दूसरे का वेट करेंगे एंड दैट इज द प्रोड्यूसर कंज्यूमर प्रॉब्लम एंड प्रोड्यूसर कंज्यूमर प्रॉब्लम को क्यों सॉल्व करना जरूरी है बिकॉज फर्स्ट ऑफ ऑल ये एक शेयर्ड रिसोर्स यूज करते हैं ठीक है तो यहां पे हमारा म्यूचुअल एक्सक्लूजन भी इशू एड्रेस हो रहा है दूसरा यह यूज करते हैं ऑर्डर किस ऑर्डर में कोई प्रोड्यूस एंड कंज्यूम करता है तो यहां पे सिंक्रोनाइजेशन जिसको हम बोलते हैं प्रोसेस सिंक्रोनाइजेशन वो भी हो रहा है एंड तीसरा इसको मल्टीपल लोग यूज कर सकते हैं तो किस ऑर्डर में क्या चले लेट्स सपोज अगर प्रोड्यूसर p1 था p2 था अगर p2 ने पहले किया p1 ने बाद में किया p1 ने पहले किया p2 ने बाद में किया तो बफर आपका हमेशा कंसिस्ट ेंट रहना चाहिए अच्छे से परफॉर्म करना चाहिए तो मल्टीपल सिचुएशंस को प्रोड्यूसर कंज्यूमर प्रॉब्लम सॉल्व करता है ठीक है मतलब एड्रेस करता है हम इसको सॉल्व करेंगे तो प्रोड्यूसर कंज्यूमर प्रॉब्लम एक काफी जेनेरिक प्रॉब्लम है कोई भी आपसे पूछ सकता है कि व्हाट इज प्रोड्यूसर कंज्यूमर प्रॉब्लम तो आप उसको सिंपल शब्दों में बता सकते हो कि लेट्स सपोज यू हैव अ बफर एंड मल्टीपल थ्रेड्स और प्रोसेस कैन पुश मल्टीपल प्रोड्यूसर कैन पुश मल्टीपल कंज्यूमर थ्रेड्स और प्रोसेसेस कैन कंज्यूम नाउ द थिंग इज बफर इज अ शेयर्ड रिसोर्स सो मल्टीपल प्रोड्यूसर व्हेन दे आर प्रोड्यूस दे नीड टू नो द कांटेक्ट ऑफ़ द बफर हाउ मच इट इज फीड एंड हा व्हेन दे हैव टू स्लीप एंड कंज्यूमर नीड्स टू नो व्हेन कंज्यूमर नीड्स टू वेक अप एंड कंज्यूम एंड व्हेन इट्स इ इट इट नीड्स टू गो टू स्लीप राइट एंड दिस ऑर्डर माइट मेस अप द सिचुएशन सच दैट प्रोड्यूसर एंड कंज्यूमर बोथ कैन गो टू स्लीप एंड वेटिंग फॉर ईच अदर राइट उनको सिग्नल वेट कर रहे हैं सिग्नल का वेट सिग्नल अप्रोच जिसको हम बोलते हैं पर सिग्नल कभी आएगा नहीं क्योंकि दोनों ही स्लीप हो चुके हैं दैट इज द प्रोड्यूसर कंज्यूमर प्रॉब्लम अब अपने शब्दों में कैसे भी इसको एड्रेस कर सकते हो नाउ इसको एड्रेस करने के लिए कुछ-कुछ चीजें हैं सबसे पहली चीज है सेमफोर्स वेरी इंपोर्टेंट सेमफोर एक ऐसा वेरिएबल होता है इंटी जर होता है जिसके दो ऑपरेशन होते हैं फर्स्ट इज डाउन सेकंड इज अप अब इसके बहुत सारे नाम है कुछ लोग इसको बोलते हैं डाउन ऑपरेशन को स्लीप भी बोलते हैं वेट भी बोलते हैं पी ऑपरेशन भी बोलते हैं कुछ लोग अप ऑपरेशन को वेकअप ऑपरेशन सिग्नल ऑपरेशन वी ऑपरेशन भी बोलते हैं तो प बोलो वेट बोलो स्लीप बोलो डाउन बोलो ठीक है एक एक ये ऑपरेशन होता है दूसरा v बोलो सिग्नल बोलो वेक अप बोलो अप बोलो ठीक है तो यह दो ऑपरेशन है तो जो डाउन ऑपरेशन है वो क्या करता है वो काउंटर एक काउंटर होता है जिसको व डिक्रीज करता है बाय वन अगर काउंटर नेगेटिव हो जाता है तो जो बंदा काउंटर को माइनस कर रहा था जो थ्रेड जो प्रोसेस माइनस कर रहा था वो अब स्लीप हो जाएगा ठीक है अप ऑपरेशन सिगनल वेक अप अप ऑपरेशन या फिर वी ऑपरेशन क्या करता है आपके काउंटर को इंक्रीज करता है बाय वन स प् इव एंड वो वेक अप हो जाता है किसी को वेक अप करता है सॉरी अगर काउंटर स्टिल नेगेटिव है मींस अगर काउंटर कभी नेगेटिव हो गया है तो इसका मतलब किसी ने किसी उस परे वेट कर रहा होगा उस काउंटर पर कोई ना कोई वेट कर रहा होगा लेट्स सपोज काउंटर मेरा तीन है तीन का मतलब है तीन थ्रेड कॉन्करेंटली पैरेलली चल सकते हैं ठीक है तो सबसे पहला थ्रेड आएगा t1 वो बोलेगा काउंटर कितना है तीन है मैं इसको रिड्यूस करूंगा टू कर दूंगा फिर वो चेक करेगा क्या यह नेगेटिव हुआ डाउन ऑपरेशन इसने किया डाउन में क्या होता है फर्स्ट इट डिक्रीज देन इट चेक इफ इट इज नेगेटिव नो ये देखो काउंटर डिक्रीज बाय वन देन इफ इट चेक्स इफ इट इज नेगेटिव t1 बोलेगा काउंटर कितना है तीन है मैं इसको एक से डिक्रीज करूंगा दो हो जाएगा क्या ये नेगेटिव है नहीं t1 बोलेगा ओके आई विल नॉट स्लीप आई विल रन t1 रन हो जाएगा t2 आएगा वो बोलेगा c कितना हो गया वन t2 बोलेगा क्या ये नेगेटिव है नहीं t3 t3 भी वही करेगा c -1 0 तो अब मेरे तीन थ्रेड स्केड्यूल हो गए हैं चल रहे हैं चौथा थ्रेड आएगा चौथा थ्रेड बोलेगा c -1 -1 हो जाएगा ये अब बोलेगा क्या ये नेगेटिव है तो हम तो बोलेंगे यस यह नेगेटिव है इसका मतलब जो भी मेरे सेमा फर जो भी मेरे इंटी जर की वैल्यू थी वो ऑलरेडी यूज हो चुकी है जितने मैक्सिमम थ्रेड में यूज कर सकता था स्केड्यूल कर सकता था वो मैंने कर दिए हैं जो कि है तीन राइट t1 t2 t3 हो गए हैं t4 भाई तूने काउंटर को डिक्रीज किया है तूने नेगेटिव कर दिया नाउ लेट्स गो टू स्लीप t4 हो गया स्लीप स्लीप हो गया एट अ काउंटर वैल्यू ऑफ c मा c = -1 ठीक है तो t4 इज स्लीपिंग नाउ t1 t2 t3 जो चल रहे हैं लेट्स सपोज इसमें से t2 ने अपना काम खत्म कर दिया जब वो काम खत्म करेगा वो अप ऑपरेशन को कॉल करेगा वे बकप या सिग्नल कुछ भी बोलो उस ऑपरेशन को कॉल करेगा काउंटर को क्या कर देगा c प्व अब ऑपरेशन में क्या होता है काउंटर इंक्रीज बाय वन तो c प्व का मतलब जो पहले माइव था वो हो जाएगा जीरो ठीक है अब वो चेक करेगा कि ये लेस दन इक्वल टू 0 कर लेना ठीक है लेस दन इक्वल टू 0 कर लेना अब वो चेक करेगा काउंटर कितना है क्या काउंटर लेस दन इक्वल टू 0 है बोलेगा हां भाई काउंटर तो जीरो है इसका मतलब काउंटर पहले नेगेटिव था तभी तो वो प्लस व करके उसको पॉजिटिव कर पाया जीरो कर पाया अगर वो पहले से नेगेटिव था इसका मतलब कोई ना कोई थ्रेड उस काउंटर के ऊपर वेट कर रहा है इसलिए तो वो नेगेटिव था तो अब वो बोलेगा क्या काउंटर मोर दन इक्वल टू 0 है ठीक है सॉरी क्या काउंटर लेस दन इक्वल टू 0 है वो बोलेगा यस काउंटर इज लेस दन इक्वल टू 0 तो बोलेगा इट मींस सम थ्रेड इज वेटिंग यार उसको अब वेक अप कर दो अब वो अप सिग्नल क्या करेगा उस थ्रेड को वेक अप कर देगा चेकिंग द सेमा फोर इंक्रीजिंग डिक्रीजिंग देखो यहां पे तीन ऑपरेशन हो रहे हैं बेसिकली आप क्या कर आप सबसे पहले सेमा फर को चेक कर रहे हो कि सेमा फर की वैल्यू है क्या ठीक है सेमा फर मतलब इंटी जर सेमा फर की वैल्यू चेक की उसको प्लस या माइनस जो भी किया प्लस माइनस बाय वन एंड देन यू आर पुटिंग समवन टू स्लीप और वेक अप यह तीन ऑपरेशन है ये तीनों टॉमिक होनी चाहिए जब भी एक सेमा फोर का ऑपरेशन हो रहा है अप ऑपरेशन लेट्स सपोज अप में आप क्या करते हो सबसे पहले सेमा फोर चेक करते हो उसको प्लस व करते हो फिर आप क्या करते हो वेक अप करते हो यह पूरा का पूरा अप ऑपरेशन एटॉमिक होना चाहिए को आज हम अटॉमिक बना रहे होंगे अटॉमिक मतलब इस जब अप ऑपरेशन हो रहा है इसके बीच में कांटेक्ट स्विच नहीं होना चाहिए एंड सेम गोज फॉर डाउन ऑपरेशन यह ऑप्शनल है आप पढ़ सकते हो इंटरव्यू पर्सपेक्टिव से इंपोर्टेंट नहीं है सेमा फॉर इंटर्नल्स मतलब किसी भी चीज को एटॉमिक कैसे बनाया जा सकता है यह अभी तक हमने सिर्फ बिजी एंड वेट में देखा है ठीक है बिना बिजी वेट यूज किए तो ऑपरेटिंग सिस्टम क्या कर सकता है कि जब भी सेमा फोर का अप या डाउन ऑपरेशन रन हो रहा है अप या डाउन ऑपरेशन रन हो रहा है तो क्या कर सकता है जब भी ऑपरेशन रन हो रहा है उस सीपीयू पर सारे इंटरप्ट को डिसेबल कर सकता है जिससे क्या होगा वो पूरा ऑपरेशन रन होगा जब तक वो रन नहीं हो जाता तब तक सारे इंटरप्ट डिसेबल्ड है एंड यहां पर हम इंटरप्ट डिसेबल करने को बैड इसलिए नहीं बोल सकते क्योंकि अप एंड डाउन ऑपरेशन इज अ वेरी चीप ऑपरेशन बहुत ही जल्दी हो जाएंगे य ठीक है एक चेक करना है प्लस करना है और सिस्टम कॉल करनी है या फिर टीएसएल इंस्ट्रक्शन आप यूज कर सकते हो जो कि हमने देखा था कि भाई मेमोरी बेस्ड लॉक यूज कर सकते हैं ठीक है तो यह सब वही लिखा हुआ है कि भाई स्लीप एंड वेकअप सब स्मॉल प्रोसीजर है तो इसलिए आप इंटरप्ट डिसेबल कर सकते हो सो या इस पे आप ध्यान दो सेमा फोर जो हम यूज कर रहे हैं बेसिकली सिंक्रोनाइजेशन के लिए कि थ्रेड वन आ स्केड्यूल हो रहा है थ्रेड टू आ स्केड्यूल हो रहा है थ्रेड थ्र वेट कर रहा है फिर इसको वेक अप कर रहे हैं सो बेसिकली वीी आर यूजिंग अ वेक अप एंड स्लीप विद सिंक्रोनाइजेशन सिंक्रोनाइज हो रहा है ना सब कुछ एंड यह ऑपरेशन हम कर रहे हैं सॉफ्टवेयर में यहां पे हमने हार्डवेयर में तो टीएसएल जो भी अंडर द हुड यूज कर रहा है दैट्ची प्रोग्राम सो बेसिकली सेफर इज अ कंस्ट्रक्ट मेड आउट ऑफ हार्डवेयर इंस्ट्रक्शंस या हार्डवेयर कोड फॉर यूजर ठीक है अब देख लेते हैं सेमा फर टेक्स और कंडीशनल वेरिएबल ये तीनों बहुत इंपॉर्टेंट है c+ प में तीनों अवेलेबल हैं बेसिकली आपने देखा हार्डवेयर में क्या हो सकता है टीएसएल हो सकता है अ टेस्ट एंड सेट लॉक राइट और आप अ इंटरप्ट डिसेबल कर सकते हो अब इन दो चीजों का और भी काफी चीजें इन हार्डवेयर चीजों का यूज करके कुछ-कुछ कंस्ट्रक्ट बनाए गए हैं सॉफ्टवेयर कंस्ट्रक्ट जैसे कि सेमफोर बनाया गया है जिसको आप डायरेक्टली यूज कर सकते हो टेक्स बनाया गया जिसको आप अंडर द हुड ये बहुत कुछ यूज कर रहे हैं जैसे कंडीशनल वेरिएबल बनाया गया है अब हम स्लीप एंड वेकअप को देख पाएंगे यूजिंग दिस कंस्ट्रक्ट्स जो कि हमें रैपर्स है अराउंड द हार्डवेयर इंस्ट्रक्शंस बेसिकली सेफर जब भी आप वेट सेफर के ऊपर वेट या सिग्नल या डाउन अप जो भी करते हो एट द एंड हो क्या रहा है कर्नल के अंदर जाके आपका सेमफोर अंडर द हुड कर्नल को बता रहा है कि भाई प्लीज ब्लॉक माय लॉक एट हार्डवेयर लेवल तो कर्नल में सब हो रहा है बट फॉर अस दीज आर द रैपर्स जो हम अपने कोडिंग में डायरेक्टली यूज कर सकते हैं सेमफोर क्या है एक सिंक्रोनाइजेशन प्रिमिटिव है जो एक काउंट मेंटेन करता है ठीक है और शेयर्ड रिसोर्स को मल्टीपल प्रोसेस या थ्रेड एक्सेस कर रहे हैं तो उसका काउंट मेंटेन कर सकता है बेसिकली अगर मैं चाहूं कि मेरे चार थ्रेड है चार कोर है तो मैं चार थ्रेड को साइमल नियस अलाव कर सकता हूं कुछ भी काउंट अगर आपको देना है कि मैं अपने एट अ टाइम दो थ्रेड चला सकता हूं राइट दो थ्रेड एट अ टाइम मेरे बफर को कर सकते हैं एक्सेस तो मैं अपने सेमफोर की वैल्यू वन या टू रख सकता हूं बेसिक बेसिस ऑन कि मैं अप एंड डाउन में क्या कंस्ट्रक्ट रख रहा हूं कि अप एंड डाउन काउंटर लेस दन इक्वल टू 0 काउंटर मोर दन इक्वल टू 0 राइट काउंटर इज लेस दन 0 काउंटर इज मोर दन रो क्या रख रहा हूं व हम देखेंगे कोड में टेक्स क्या है टेक्स बेसिकली एक लॉक ही होता है ठीक है जो हमने अभी तक देखा है म्यूट्स कुछ नहीं है एक लॉक ही है ठीक है जो भी आपके शेड रिसोर्स है उसको आपको प्रोटेक्ट करना है तो टेक्स लगा सकते हो स्पेशल टाइप का लॉक है कंडीशनल वेरिएबल कंडीशनल वेरिएबल एक सिंक्रोनाइजेशन प्रिमिटिव है अगेन जो कि थ्रेड को वेट करवाता है बेस्ड ऑन सम कंडीशन अब मैं आपको इतना बता दूं कि यह जो कंडीशनल वेट होता है लेट्स सपोज मैं बोलता हूं कि जब तक x ले जीरो नहीं हो जाता ना भाई थ्रेड जो भी थ्रेड इसको एक्सेस कर रहा है वो स्लीप हो जाएगा कंडीशनल वेरिएबल कभी भी x < 0 को अगर थ्रेड वन ने देखा और x < 0 नहीं है तो थ्रेड वन जब भी स्लीप पे जाएगा वो कंटीन्यूअसली x की वैल्यू चेक नहीं करेगा कंडीशनल वेरिएबल की इंप्लीमेंटेशन ही ऐसी है कि वो सीपीयू साइकिल्स को कंज्यूम ही नहीं करता ठीक है अब वो क्या करता है वो थ्रेड वेट प चला जाता है और जब भी कोई और थ्रेड वेक अप करेगा उस थ्रेड को तभी वो जगेगा जब तक उसको कोई जगाए नहीं वोह नहीं जगेगा वह चेक नहीं करेगा कंडीशन को कि भाई यह कंडीशन मैं चेक करता रहूंगा और जब मेरी कंडीशन मीट करेगी मैं तब वेक अप हो जाऊंगा ऐसे नहीं होगा अदर वाइज दैट विल वेस्ट योर सीप सीपीयू साइकल राइट तो कंडीशनल वेरिएबल एक ऐसा कंस्ट्रक्ट है जो हमें दिया गया है सेमफोर कैन हैव अ वैल्यू ऑफ जीरो और एनी पॉजिटिव इंटी जर नेगेटिव भी हो सकती है टेक्स का हमेशा बाइनरी स्टेट होता है या तो यह लॉक होगा या य अनलॉक होगा ठीक है एंड कंडीशनल वेरिएबल आप अकेला यूज नहीं कर सकते कंडीशनल वेरिएबल को म्यूट्स चाहिए रहता है बाय डिफॉल्ट कंडीशनल वेरिएबल एक कंडीशन चेक करता रहता है एंड उसको एक म्यूट्स चाहिए कंडीशन चेक करने के लिए ठीक है तो यह हम देखेंगे सी प् प्लस में तो सेमा फर दो टॉमिक ऑपरेशन सपोर्ट करता है वेट या सिग्नल और लॉक कोई ऑपरेशन नहीं होता इसका लॉक और अन लॉक होता है और इसको थ्रेड ऑन करते हैं जिसने लॉक किया है वही अनलॉक करेगा इसको ठीक है जिसने लॉक एक्वायर किया व रिलीज करेगा कंडीशनल वेरिएबल अलाव करता है थ्रेड को ब्लॉक रहने के लिए जब तक उसको नोटिफाई नहीं किया जाता और यह सब लिखा हुआ है इनके बारे में आप पढ़ लेना कि सेमफोर कैन बी यूज्ड बोथ फॉर म्यूचुअल एक्सक्लूजन कि आपको अगर किसी रिसोर्स को बचाना है तब भी सेमफोर यूज कर सकते हो और कंडीशनल सिंक्रोनाइजेशन भी कंडीशन सिंक्रोनाइजेशन भी कर सकते हो बिकॉज सेमफोर जब आप वेट एंड सिग्नल कॉल कर रहे होगे किसी को वेट करवा रहे हो किसी को सिग्नल दे रहे हो कि भाई उठ जा उसके ऊपर आप कंडीशन लगा सकते हो कि कब मुझे सिग्नल देना है राइट लॉक अनलॉक इसके पास दो मेथड होते हैं और एक ट्राई लॉक होता है जो कि सिंपल लॉक को चेक करता है एंड देखता है कि क्या वह लॉक एक्वायर करने के लायक है यानी राइट तो इसका वेट है एक मेथड एक नोटिफाई वन है एक नोटिफाई ऑल है नोटिफाई वन क्या करता है एक ही थ्रेड को जगाए नोटिफाई ऑल सारे थ्रेड को जगा देगा सारे थ्रेड दोबारा चलेंगे दोबारा कंडीशन चेक करेंगे अगर कंडीशन मीट हुई जिस जिस थ्रेड के लिए वो चल जाएंगे यूज केस क्या है इनके सेमफोर यू इन तीनों के यूज केस पढ़ लेना आराम से ठीक है काफी इंपोर्टेंट है सेमफोर का यूज केस है कि क्रिटिकल सेक्शन को प्रोटेक्ट कर सकता है ठीक है फिक्स नंबर ऑफ रिसोर्सेस अगर आपको किसी रिसोर्स को ठीक है लेट सपोज अगर कोई भी मेरा सॉकेट खुल रहा है मेरे सर्वर पर जो हमने सर्वर बनाया था मैं चाहता हूं कि मेरे एट मैक्स चार थ्रेड रन हो ठीक है तो मैं सेम फर की वैल्यू चार तीन रख सकता हूं ठीक है और इसका यूज कैसे है कि आप सिग्नल कर सकते हो वेक अप एंड स्लीप इ बेसिकली सिग्नल उसके बाद टेक्स क्या हैन इंश्योरिटी कल सेक्शन अगेन वाई कंडीशनल वेरिएबल प्रोड्यूसर कंज्यूमर सिनेरियो में काफी काम आता है क्योंकि इसमें नोटिफाई मेथड है और थ्रेड वेट करता रहता है और वह सीपीयू साइकिल भी कंज्यूम नहीं करता वह सिंपल स्लीप हो जाता है जब तक उसको वेक अप ना किया जाए यूजिंग नोटिफाई तो यह काफी ज्यादा प्रोड्यूसर कंज्यूमर यूज करते हैं कंडीशनल वेरिएबल को बट अगेन कंडीशनल वेरिएबल को एक लॉक चाहिए रहता है टू ऑपरेट एनी सिचुएशन वेयर थ्रेड स्लीप और वेट अंट्स मर का कोड देख लेते हैं ठीक है इस प्रोड्यूसर कंज्यूमर के कोड में हम सेमा फर की इंप्लीमेंटेशन भी खुद से कर रहे होंगे ठीक है क्योंकि मैं आपको बता रहा हगा अदर वाइज आप सीधा भी यूज कर सकते हो ठीक है आप नेट से भी पढ़ सकते हो आप ऐसे भी यूज कर सकते हो सेफर ठीक है और सीधा आप ऐसे सेम यह बना सकते हो सेफर बट मैं आपको इंप्लीमेंटेशन इसलिए बता रहा हूं ताकि आपको पता चल जाए कि सेमा फर के दो ऑपरेशन चलते कैसे हैं वेट एंड सिग्नल तो यह यहां पे सेमा फोर मैंने क्लास बनाई है सेमफोर बनाने के लिए मेरे को दो चीजें यूज करनी पड़ रही है स्टैंडर्ड लाइब्रेरी से सबसे पहले मैं एक लॉक लेके आ रहा हूं टेक्स एंड दूसरा एक कंडीशनल वेरिएबल लेके आ रहा हूं जो कि जिसका नाम है कंडीशन ठीक है और यह मैंने काउंट रखा है ठीक है जो भी आपका वेट एंड सिग्नल मेथड है ठीक है या फिर एक्वायर एंड रिलीज बोलू ठीक है यहां पे वेट एंड सिग्नल बोलू अप एंड डाउन बोलू जो भी सेमफोर का कंस्ट्रक्टर बनाया जो कि एक काउंट लेता है ठीक है सेमफोर की वैल्यू जितनी कितनी भी हो सकती है रिलीज क्या करता है रिलीज मतलब छोड़ना वो छोड़ने से पहले क्या करेगा क्योंकि मैंने आपको बोला था ना अप एंड डाउन ऑपरेशन रिलीज एंड क्वायर ऑपरेशन कोई भी पी एंड व ऑपरेशन सब टॉमिक होने चाहिए तो एक बार रिलीज कॉल हो गया तो यह पूरा का पूरा रन होगा इसकी कोई भी लाइन पर कांटेक्ट स्विच नहीं होगा तो इसके लिए मैंने क्या किया यूज लॉक गार्ड ठीक है अब जो म्यूट्स है ना टेक्स टेक्स इ इट सेल्फ अ लोक काइंड ऑफ प्रैपर एंड म्यूट्स को एक्वायर करना पड़ता है हमें ठीक है उसको एक्वायर करने के लिए आपको क्या करना पड़ेगा कोई भी एक लॉक यूज करना पड़ेगा सो म्यूट्स को एक्वायर करने के लिए आपको लॉक यूज करना पड़ेगा एंड मैंने आगे लिखा भी है कि काफी तरह के लॉक होते हैं उसमें एक यूनिक लॉक होता है ठीक है और एक होता है अ दिस लॉक गार्ड लॉक गार्ड स्लाइटली मोर इफेक्टिव होता है यूनिक लॉक से क्यों क्योंकि लॉक गार्ड अब जैसे ही लगाते हो ना आपने अगर यहां पर देखा हो लॉक गार्ड आप ने जैसे ही लगाया ठीक है तो यह लोक गार्ड आप जब लगा रहे हो ना तभी अपने आप एक्वायर हो जाएगा जब आप फंक्शन के बाहर जाओगे यह मैंने एक्वायर किया यहां पे लॉक गार्ड ठीक है रिलीज किया तो लॉक गार्ड सबसे पहले मैं रिलीज करूंगा तो बेसिकली काउंट इंक्रीज करना है तो मुझे इन सबको एटॉमिक बनाना है तो मैं जैसे ही इस फंक्शन के अंदर आऊंगा मैं लॉक गार्ड जैसे ही एक्वायर करूंगा तो ये अपने आप ऑन कंस्ट्रक्टर एक्वायर हो जाएगा मुझे डॉट एक्वायर या फिर डॉट लॉक करने की जरूरत नहीं है ठीक है जी तो मैंने एक लॉक बना दिया है विद म्यू टेक्स जो कि मैंने ऊपर डिफाइन किया था तो सेमा फर ने क्या किया लॉक एक्वायर कर लिया काउंट को प्लस कर दिया अब उसने काउंट जब प्लस किया तो उसने नोटिफाई कर दिया एक थ्रेड को कि भाई आई हैव मेड काउंट प्लस व नाउ एनी थ्रेड हु इज वेटिंग कैन वेक अप एंड रन तो यह है आपका अप ऑपरेशन ठीक है यह आपका डाउन ऑपरेशन जो कि क्या करता है यहां पर मैंने यूनिक लॉक यूज किया है लॉक गार्ड भी यूज कर सकते हो सो बेसिकली मैंने आपको दिखाने के लिए यहां पे बिजी वेट यूज़ किया है ठीक है मैंने बिजी वेट में क्या किया है कि काउंट जैसे ही जीरो होगा मैं वाइल लूप में अ लॉक के ऊपर वेट करता रहूंगा ठीक है और जब यहां पे मेरा काउंट अ कुछ भी लाइक जीरो जीरो नहीं होगा लाइक मोर दन जीरो हो जाएगा तो इसका मतलब कोई थ्रेड है जो एग्जिट हो चुका है तो मैं क्या करूंगा मैं बोलूंगा कि भाई जो भी थ्रेड यहां पे वेट कर रहा था ना अब तेरी बारी है चलने की यू कैन रन आफ्टर डिक्रीजिंग काउंट काउंट डिक्रीज करने का मतलब सिंपल सा ये है कि मैं रन होने जा रहा हूं काउंट प्लस करने का मतलब सिंपल सा यह है कि मैं रन हो चुका हूं ठीक है ये सेमा फर की इंप्लीमेंटेशन है मैंने जस्ट आपको दिखा दी अगर आपको नहीं यूज करना सिंपल इसको हटा सकते हो सीधा सेमा फर यूज कर सकते हो हमने अपने प्रोजेक्ट में सेमा फर सीधा भी यूज करा था अब हम सेमफोर की दो वैल्यूज दे रहे होंगे सबसे पहले एमटी स्लॉट कितने एमटी स्लॉट है मैक्सिमम बफर का साइज जो हमारी क्यू का साइज है वो है 10 ठीक है तो मेरे कितने सेमफोर की वैल्यू मैं रख रहा हूं 10 ठीक है तो अगर कोई भी थ्रेड उसमें प्रोड्यूस करना चाह रहा है तो वो सबसे पहले सेमफोर की वैल्यू देखेगा 10 है तो प्रोड्यूस कर देगा उसको ओबवियसली पहले एक्वायर यूज करेगा ठीक है वो देखेगा काउंट कितने है 10 है ठीक है तो वो सीधा यहां आ जाएगा कि भाई मैं अभी चल सकता हूं वो प्रोड्यूस कर देगा फिर दूसरा थ्रेड आएगा नौवां थ्रेड फिर आठवा सात 6 5 4 3 2 एक जब लास्ट वाल थ्रेड आएगा वो देखेगा कि भाई काउंट की वैल्यू कितनी है जीरो मतलब मेरा बफर फुल हो गया ठीक है तो एमटी स्लॉट शुरू में कितने होंगे एमटी तो सारा ही बफर होगा तो 10 होगा ठीक है फीड स्लॉट कितने हो गए जीरो तो यह मैंने दो सेमफोर इनिश इज कर दिए टू लिमिट माय बफर का साइज कि 10 तक जैसे ही प्रोड्यूस पूरा का पूरा हो गया उसके बाद जो भी थ्रेड प्रोड्यूस करना चाहेगा वह स्लीप हो जाएगा या फिर पूरा का पूरा मेरा अगर बफर एमटी हो गया तो जो भी थ्रेड कंज्यूम करना चाहेगा वो स्लीप हो जाएगा एंड दैट विल हैपन यूजिंग दिस ओके अब मैंने एक प्रोड्यूसर बनाया है ठीक है प्रोड्यूसर बनाया है जो कि एक वैल्यू लेगा एमटी स्लॉट देखेगा और उसको एक्वायर रन करेगा ठीक है अब एक्वायर जब भी वह रन करेगा एमटी स्लॉट की वैल्यू शुरू में तो 10 थी ठीक है शुरू में 10 होगी क्वायर रन करेगा वो देखेगा लॉक एक्वायर करने के बाद कि काउंट कितना है काउंट यहां प जीरो नहीं है मतलब वो प्रोड्यूस कर सकता है व तो काउंट को माइनस माइनस व करेगा ठीक है इस ब्लॉक को रन करेगा इसको ब्लॉक को ऐसे कर्ली ब्रेसस के अंदर क्यों रखा हूं मैं आपको बताता हूं तो इस ब्लॉक को रन करने के लिए वो क्या करेगा सबसे पहले लॉक एक्वायर करेगा ठीक है बफर बफर आपकी जो भी क्यू है उसमें पुश करेगा वैल्यू और जो भी उसने प्रिंट करना था करेगा और यहां पे बाहर चला जाएगा मैंने आपको पहले ही बताया था जो लॉक गार्ड होता है वो एक ऐसा लॉक होता है जो अपने आप एक्वायर हो जाता है उन कंस्ट्रक्टर एंड अपने आप रिलीज हो जाता है उन डिस्ट्रक्टर तो बेसिकली यह ब्लॉक कोड ब्लॉक का मतलब यह है कि स्कोप के अंदर मैं जैसे ही घुसूक कंस्ट्रक्टर कॉल करेगा और जैसे इस कोड के बाहर जाऊंगा तो ये डिस्ट्रक्ट हो जाएगा पूरा कोड ब्लॉक स्कोप के बाहर जाएगा तो लोक गार्ड अपने आप रिलीज हो जाएगा ज्यादा कॉम्प्लिकेटेड लग रहा है तो यहां पर यूनिक लॉक बना सकते हो और यूनिक लॉक को आप यहां पे एक्वायर कर सकते हो ठीक है तो जब इसने पूरा प्रोड्यूस कर दिया उसके बाद इसने रिलीज कॉल कर दिया रिलीज में क्या होगा जो इसने काउंट माइनस माइनस किया था अब उसने क्या कर दिया प्लस प्लस कर दिया ठीक है कि मैं चल चुका हूं भाई मैंने जो प्रोड्यूस करना था आई हैव प्रोड्यूस्ड कंज्यूमर क्या करता है सिंपल सी बात है फीड स्लॉट में से एक्वायर करता है अगेन कंज्यूमर क्या करता है कंज्यूम कर रहा है तो काउंट को पहले देखेगा सबसे पहले ठीक है और कंज्यूमर काउंट को देखेगा कि भाई लेकिन उसका काउंट फीड स्लॉट प होगा कि कितने फीड हो गए हैं अगर फीड स्लॉट जीरो है जो कि शुरू में जीरो ही है अगर किसी ने प्रोड्यूस अभी तक नहीं किया तो व एक्वायर में जाएगा व देख काउंट कितना है जीरो तो बोलेगा कि भाई मुझे वेट करना है ठीक है जब तक लोग छूट नहीं जाता जब तक लोग छूट नहीं जाता ठीक है तो वह बेसिकली वेट करेगा लॉक पे जैसे ही लॉक नोटिफाई होता है कंडीशन डॉट नोटिफाई अगर आप देखोगे कंडीशन यहां पे है ठीक है और कंडीशन हम लॉक पे लगा रहे हैं तो कंडीशन वेट करते जा रही है करते जा रही है ठीक है जी और जैसे ही आपका टेक्स छूटेगा बेसिकली यहां से नोटिफाई वन होगा तो यहां पर आप आ जाओगे और इसका मतलब है आप अब चल सकते हो आई नो काफी कॉम्प्लिकेटेड लग रहा होगा अगर आपको नहीं समझ आ रहा है बट डोंट वरी इट्स फाइन आप अगर इस कोड को अच्छे से देखोगे चैट जीपीटी से पूछोगे एक एक एक लाइन का मतलब तो आपको बता देगा वो ठीक है मैं जस्ट आपको इसलिए कोड बता रहा हूं ताकि आपको प्रोड्यूसर कंज्यूमर प्रॉब्लम समझ तो आ जाए बट यह भी पता चल जाए इसको हम सॉल्व कैसे करते हैं ठीक है बस फिर कुछ नहीं है हमने 20 थ्रेड स्पॉन करे 20 प्रोड्यूसर स्पॉन करे ठीक है और यह बेसिकली लडा फंक्शन है ठीक है थ्रेड को आपको एक लडा फंक्शन देना पड़ता है जो कि क्या करता है 20 थ्रेड स्पॉन करता है ठीक है अगर आप देखो तो यह दि 20 थ्रेड्स विल बी स्पॉन प्रोड्यूसर 20 थ्रेड्स विल बी स्पन फॉर कंजूमिंग एंड जॉइन कॉल कर देंगे कि भाई जब यह प्रोड्यूस कर रहे कंज्यूम कर रहे सारे थ्रेड एग्जिट जब तक नहीं हो जाते तब तक मेरा प्रोग्राम एग्जिट मत करना सो इस जॉइन का मतलब यह है एंड जब सब खत्म हो जाए तो रिटर्न कर देना ठीक है आई होप सब समझ गया होगा तो अपन क्या कर लेते हैं अपन एग्जीक्यूट कर लेते हैं बेसिकली तो एग्जीक्यूट के लिए आपको पता है कि यह सब पी थ्रेड देना पड़ता है इसको अपने आप नहीं होता वो अब देखते हैं कि कंसिस्टेंटली प्रोड्यूस और कंज्यूम हो रहा है या नहीं ऐसा तो नहीं है कि बफर आपका एमटी हो रहा है और इसको आप 20 को 20000 भी कर सकते हो ठीक है नोट अ प्रॉब्लम तो अगर आप देख पा रहे हो तो प्रोड्यूस पहले वन हुआ फिर टू हुआ फिर 3 4 5 6 7 8 9 10 10 बफर आपका पूरा फुल हो गया फिर कंज्यूमर कंज्यूम करना शुरू किया 1 2 3 4 5 6 7 8 9 10 ठीक है अब बफर एमटी हो गया तो फील्ड स्लॉट एंड एमटी स्लॉट यूज हो रहा है यहां पर सेमा फोर और जैसे ही आपका बफर पूरा एमटी हो जाता है तो आपका एमटी स्लॉट वाला सेमफोर बोलता है कि भाई काउंट इज नेगेटिव नाउ आई विल पुट एनी थ्रेड टू स्लीप हु वांट्स टू कंज्यूम इसलिए कंज्यूमर यहां पे स्टॉप हो जाता है प्रोड्यूसर अपना काम शुरू करता है 20 प्रोड्यूस करता है अगेन यहां से यहां तक उसका कितना हो गया 10 आइटम प्रोड्यूस हो गए अब आपका जो फीड स्लॉट वाला है बोलता है कि भाई पूरे के पूरे स्लॉट फिल हो चुके हैं अब कोई भी थ्रेड आता है टू प्रोड्यूस फीड स्लॉट सेमफोर विल टेल कि कंज्यूमर इज एट इट्स फुल कैपेसिटी सो यू कांट डू दैट सो गो टू स्लीप तो फिर कंज्यूमर करना चाहते हैं तो यहां पर 20 कंज्यूमर चल चुके हैं 20 प्रोड्यूसर चल चुके हैं कोई भी एरर नहीं आया ठीक है यह इंटरव्यू में आपको इसकी इंप्लीमेंटेशन नहीं पूछी जाएगी डोंट वरी बट मैं आपको जस्ट बता रहा हूं ताकि आपको कोई दिक्कत ना आए तो 20000 थ्रेड स्पन करते हैं और 20000 थ्रेड यहां पर स्पन करते हैं और देखते हैं कि अपना बफर कैसे बिहेव करता है तो अगर आप देख पाओ तो सब कुछ अच्छे से हुआ है देखो पूरा 20000 तक कंज्यूम हुआ है प्रोड्यूस भी हुआ है अब अगर आप देखोगे तो आपका ऐसा नहीं है कि पहले प्रोड्यूसर चल रहा है पूरा 20000 तक फिर कंज्यूमर चल रहा है 20000 तक ठीक है वह हमारी बफर की कैपेसिटी 10 है जबकि उसमें 20000 प्रोड्यूसर प्रोड्यूस कर रहे हैं और 20000 कंज्यूमर कंज्यूम कर रहे है राइट तो ये काफी इंटरेस्टिंग चीज है कि आपका बफर कभी भी वो नहीं किया कंसिस्टेंट रहा ओवर द टाइम तो इसका मतलब अब ये मेरा बफर काइंड ऑफ मैं बोल सकता हूं एक मैसेजिंग क्यू है राइट काइंड ऑफ जो एक मैसेज भेजती है प्रोड्यूसर से कंज्यूमर तक राइट तो आई होप काफी कुछ आपको सीखने को मिला होगा अगर आपको सीखने को मतलब अगर आपको कंफ्यूजन हो रहा है तो इसको कंट्रोल सी कंट्रोल v करो चैट जीबीटी को बोलो कि भाई एक-एक लाइन का मतलब समझा दे और फिर आप इसकी डॉक्यूमेंटेशन भी पढ़ सकते हो एज यू ऑलरेडी नो कि हमारी youtube4 जरूरी होती है तो आप और ज्यादा इसको समझने में कोशिश कर सकते हो गिट अप में मैं कोड दे दूंगा और मिलते हैं अगली वीडियो में जहां पर अपन अपना फाइल इंक्रिप्टर और अच्छा बना रहे होंगे इन सबको और यूज कर रहे होंगे आज की वीडियो में कम समझ आया तो वहां पे और ज्यादा समझ आ जाएगा और मिलते हैं अगली वीडियो में बैक इन मास्टरी की जहां पर हम सब कुछ प्रोडक्शन में लेके जा रहे हैं एडब्ल्यू एस में और अप्लाइड ऑपरेटिंग सिस्टम की वीडियो में जहां पर हम अपना फाइल इंक्रिप्टर बना रहे होंगे तब तक के लिए बाय बाय