 بسم اللہ الرکھ مانے رہیم آج ہم موڈیول 165 دیسکس کریں گے موڈیول 165 ہے about improved locking through SRWs پیویس لی ہم نے کئی optimization تکنیق دیسکس کیا ہے سنکراریزیشن کے لئے جس کا نام میں دیکھا ہے کرٹیکل سیکشن ہم نے دیکھا ہے کہ یہ کمپیر کیا ہے تو ایک optimal method ہے اور اس کو مزید امپروف کیا رہا سکتا ہے by spin count اور دوسی تکنیق بھی ہم نے دیسکس کیا ہے SRWs ہم نے دیکھا ہے کہ light weight locks ہے اور dual mode کی اندر ہے تو اس کے کئی سارے ہمیں advantages نظر آتے ہیں تو ہم انہوں advantages کو کیسے use کریں گے تاکہ ہم اپنے جو سنکراریزیشن over heads ان کو reduce کر سکیں تو SRWs کا ایک سب سے بڑا advantage جو ہے وہ اس کا shared mode ہے share mode کے اندر ایسا نہیں ہے کہ ایک جو variable بالکل lock ہوگئے آپ اس کو read بھی نہ کر سکیں share mode کے اندر اتے بھی آپ locked variables کو بھی read کر سکتے ہیں اس سے آپ کو ایک طرح کی optimization مل رہی ہے جس process نے صرف read کرنا ہے اس کو wait نہیں کرنا پڑے گا اس data item کے unlock ہونے کا اس کے لوہ یہ light weight ہیں بہت کم processing require کرتے ہیں فاستر ان کی execution ہوتی ہے few instructions کے اس کو operations required ہیں اور مزید matters جو وہ simplifier جاتے ہیں کیونکہ یہ recursion کا استعمال نہیں کرتے ہیں جب recursion کا استعمال ہوگا تو stack مینٹین کرنے پڑے گی آپ کو جو previous status ہے اس کو مینٹین کرنا پڑے گا اور اس کو stack کے اوپر store بھی کرنا پڑے گا تو یہ سارے advantage میں SRWs میں نظر آتے ہیں جس میں پتہ لگتا ہے کہ اس کے come over head ہوں گے come operations یہ استعمال کرے گا اور اس کے لئے زیادہ simplicity ہوگی faster execution ہوگی اب اگر ہم SRW کی performance ہے اس کو ہم evaluate کرنا جاتے ہیں تو اس کے لئے تری کام پہلے already بنا چکے ہیں جس طرح کہ ہم نے program بنایا تھا اور اس program کے اندر کئی ساری ہم نے threads ران کیا تھیں اور اس کے اندرم parameter کے اندر پاس کرتے تھے کتنی threads اور کتنے variables اور اس thread نے simply کیا کرنا ہے اتنے دفعہ اس نے delay کرنا ہے اور variable کو increment کرتے جانا ہر thread نے یہی کام کرنا ہے اور number of threads جو ہم specify کر سکتے ہیں کہ کتنی threads نے run کرنا ہے اب اگر اس کو ہم نے دیکھا تھا کہ اگر کوئی بھی ہم synchronization construct نہیں use کرتے تو پھر ہماری run time کتنی execution کتنی دیر میں ہوتی ہے run time execution کتنی ہے execution time کتنے ہے اور پھر ہم نے دیکھا تھا کہ اگر ہم دوسرے constructs جیسے کہ critical section use کرتے ہیں یا interlocked functions use کرتے ہیں یا emutaxes use کرتے ہیں تو تب کیا ہمارے پاس run time ہوتا ہے اور ان تمام run time اس کو compared کرکے ہم دیکھ سکتے ہیں کہ best performance کیسکی ہے اب یہی چیز ہم srw's کیا پر اپلائے کر سکتے ہیں وہی program ہم rewrite کر سکتے ہیں جس کے اندر کہ locking کیلئے جو ہم use کرے ہیں construct وہ srw's ہوں گے اور اس کے اندر srw's جو ہم use کرے ہیں ابھی ہم exclusive mode کے اندر use کرے ہیں اس کو ہم shared mode میں بھی نہیں use کرے کیونکہ exclusive mode جو ہے اس کی overheads جو ہے وہ of course زادہ زادہ constraint ہے اس کے overheads زادہ ہیں تو اس لی ہم اس کو exclusive mode کے اندر use کرے ہیں اسی program کو اگر آپ modify کر لیں کہ وہ srw's کو استعمال کریں اس کو acquire کریں اور اس کو release کریں اور اس کی بدل سے locking perform کریں تو اس program کا پھر ہم run time نکال کے دوسر program کے ساتھ یا critical section کے ساتھ اس کو compare کر کے دیکھ سکتے ہیں کہ کوئی ہمیں improvement حاصل ہوئی ہے یا نہیں ہوئی ہے ہم نے exactly یہی کام کیا اس program کو modify کیا using srw's اور پھر اس کا run time لیا اور اس کو critical section کے run time کے ساتھ compare کیا تو آپ دیکھ سکتے ہیں جو result آئے ہیں اس کو آپ screen کے پر دیکھ سکتے ہیں first case میں ہم نے srw کے ساتھ اس کو run کیا وہی 32 threads دیہیں اور 256,000 ہم نے value دیے ویرییبل کی تو آپ کے پاس جو time آرہا ہے یہاں پہاں آپ time دیکھ سکتے ہیں اور اس کو compare کر سکتے ہیں جب آپ نے critical section کے ساتھ یہ کام کیا تو of course ہمیں یہاں پہاں کافی difference نظر آرہا ہے twice یا thrice کامیں 1.5 times کامیں difference نظر آرہا ہے کہ srw's جو ہے وہ اس کا run time کام ہے تو of course اس کے اندر overheads کام ہو گئے اور پھر مزید number of threads کو increase کیا اب ہم نے number of threads 64 کر لیے اور ہر thread کیلئے جو variable count ہم نے یہ وہی 256,000 دی رکھا تو ایدھر آپ run time نوٹ کریں srw's کے case میں اور ایدھر آپ نوٹ کریں cs کے case میں تقریباً twice کا فرق ہے اور مزید اگر ہم مزید number of threads increase کر لاتے ہیں now 256 thread کے ساتھ srw's اور cs کے لیے 256 threads کے ساتھ آپ نے اس کو compare کیا تو یہاں پہ جو run time ہے اور یہاں پہ تقریباً double کا فرق آپ کو نظر آرہا ہے تو اس لیہاں سے ہم دیکھ سکتے ہیں یہ ہمارے srw's جو ہے وہ critical section سے زیادہ optimal ہے زیادہ faster perform کریں overheads جو ہے ان کے reduce ہو گئے آپ دوسرے model کے ساتھ interlocked functions کے ساتھ بھی اس کو compare کر کے چیک کریں اور mute axis کے ساتھ بھی compare کر کے چیک کر سکتے ہیں اور اسی طرح کا comparison کر کے آپ دیکھ سکتے ہیں کن میں سے کون سا زادہ optimal ہے