 اسم اللہ الرحمن الرحیم آج ہم موڈیول 121 کو دیسکس کریں گے موڈیول 121 کے اندر جو ہم نے پریویس لیگ اگزامپل دیسکس کی تھی مجھ سورٹ کے لیے کہ جس کے اندر ایک مارے پس لاج لیسٹ ہے اور اس کو ہم نمبر آف تھریڈز کو کنکرنڈلی ران کر کے اور نملٹی پروسیس سسٹم فاستر ایکزیکوٹ کرنے کے لیے جو ہے اس کو ایکزیکوٹ کریں گے اس کے لیے ایک آلگردم ہم نے سجاست کیا تھا اسی آلگردم کی امبلیمنٹیشن اس کی کوڑ جو ہے اس کو ہم ابھی دسکس کریں گے کوڑ کی طرف چلتے ہیں اس کوڑ کے اندر آپ دیکھ سکتے ہیں جو امپارٹن چیز ہے آپ نے یہاں پر ایک سٹرکچر بنائے اور یہ تھرڈ آرگومنٹ سٹرکچر ہے آپ ہر تھرڈ کو یہ از ان آرگومنٹ پاس کریں گے اور اس سٹرکچر کے اندر آپ نے کچھ لوڈ کارڈ اور ہائیڈ کارڈ یہ دو آپ نے ویریولز رکھیں اور تھرڈ نمبر یہ ایک انفرمیشن رکھی ہوئی ہے یہ انفرمیشن یہی ہے کہ اس اسپیسفک تھرڈ آیت جو ہے اس اسپیسفک تھرڈ کا نمبر ہوگا اور لوڈ کارڈ اور ہائیڈ کارڈ وہ انڈیکس ہوگی جس انڈیکس کے اندر جو پڑےوے رکھوڈز ہیں جس کو کس نے سوٹ کرنا ہے دو جسر فسکو یعنی کہ اگر آپ نے ایک لسٹ مجھے سب لسٹ ایک رے مجھے سب رے نکالنیاں تو آپ کو جسٹ کیا ضدورتا ہے دو انڈیکس اس کی ضدورتا ہے ایک سٹارٹنگ اور ایک انڈنگ تو یہ اس سب لسٹ کی سٹارٹنگ اور انڈنگ انڈیکس ہے اور اس انڈیکس کو یعنی کر کے پھر آپ کی تھرڈ اس کے اندر جتنے بھی رکھوڈز پڑےوے ان کو سوٹ کرے گی اور یہ آیت جو ہے جسٹ آپ کے تھرڈ کا نمبر ہے اس کو اڑینٹفائے کرنے کے لئے سوٹ تھرڈ جو ہے یہ آپ کی تھرڈ کا نام ہے اور انڈ رکھوڈ جو ہے that is ٹوٹل نمبر of ٹرڈ اور یہ انڈل ٹوٹل اب آپ کیا کرتے ہیں کہ آپ جس فائل کے انڈر رکھوڈ پڑے میں اس کو آپ نے ریڈ رائٹ کے لئے اوپن کر لیا اور ساری آپ کو فائل پروسیسنگ پتا ہے اور پھر آپ نے اس کو ماب کر لیا اپنی اسانی کے لئے ہے تاکہ اس کو میمری کی طرح سے اور پھر جو بھی آپ نے ایک ٹرڈ کرنے ہیں اس ٹرڈ کو جو آرگومنٹس پاس کرنے اس کو ایک سٹرکٹر بنائیں گے اس کے لئے سٹرڈ آرگومنٹ ہم نے جو سٹرکٹر بنائیا تھا اس کے لئے کچھ آپ نے میمری علوکیٹ کر لی اور جو علوکیٹٹ میمری ہے اس کے اندر کیا چیز ہوں گے اس کے اندر وہ تین سٹرکٹر کے اندر وہ تین فیلڈز ہیں جس کو کہ ہم پاس کرنے گے اندر فیلڈز کو بھی ہم نے کالکلیٹ کرنا ہے کہ اندر فیلڈز کی کیا ویلی ہوگی تو یہاں پہ اندر کارڈز ہم دیکھ سکتے ہیں اندر کارڈ کیا چیز ہے جو ہماری فائل ابھی ہم نے یہ گیٹ فائل سے فائل جو گیٹ کی تھی اس کا فائل سائلز یہ ٹوٹل نمبر of رکارڈز ہے جی ٹوٹل ہمارے پاس کتنے رکارڈز ہے اندر کارڈ نمبر of فائلز سے دوائڈ کرنے وہ یہ ہے کہ ایک جو سب فائل ہوگی یا ایک جو سب لیست ہوگی اس کے اندر کتنے رکارڈ ہوں گے یعنی رکارڈز پر ٹھریڈ ایک ٹھریڈ کو ہم کتنے رکارڈز جو ہیں وہ علوکیٹ کرنے گے تو آپ کے پاس کیا آگیا آپ بس ٹوٹل نمبر of رکارڈز آگے آپ کے پاس یہ آگیا کہ ایک ٹھریڈ کو آپ نے کتنے رکارڈز علوکیٹ کرنے اب آپ یہ کرتے ہیں اور آپ نے جو فائل ہے اس کو ماب کر لیا ہے فائل کو آپ نے ماب کر لیا ایک ممبری ماب کر لیا اور اس ماب کا ادرس آپ کے پاس پیر کارڈز آگیا اب اس ادرس سے انورڈ جو ہے آپ کی پوری فائل پڑی بھی ہے اور اس کو از ان ارے کے طور پہ اکسس کیا جا سکتا اب ہم مختلف ٹھریڈز رن کریں گے اور وہ ٹھریڈز جو ہے اس فائل کو پیسیز کے اندر ڈوائیڈ کر کے اپنے پیس کو سارٹ کرنے کی کوشش کریں گے اب کیسے ڈوائیڈ کیا اس کے لیے ہم نے ایک لوپ لگایا نم فائل جتنی کے آپ ٹھریڈز رن کرنا چاہتے ہیں یہاں پہ نمبر آ جائے گا ٹھریڈ کا اور یہ ادرس ہے لوڈ رکارڈ اور لوڈ رکارڈ پلس انڈ رکارڈ انڈ رکارڈ ٹھریڈ ڈوائیڈ جو ہے اس نمبر رکارڈ پر درغیétais جو لوڈ رکارڈ تھا اس کے اندر ہم نے نمبر اف انڈ رکارڈ ٹھریڈج آڑ کر دیا یعنی کہ اگر آپ کے پاس یہ پوری فائل ہے اس فائل کندے شروع میں یہاں پھے یہ لوڈ رکارڈ ہے تو آپ نے اس کے اندر اڈ کارڈ ٹھریڈج آڑ کر دیا اب یہ یہاں پہاںپٹ کر رہا ہے اگلے کے لیے پھر n-record th add کر دیں گے یہاں پہنٹ کرنے لگتا ہے اگلے کے لیے پھر اب n-record th add کر دیں گے اور یہاں پہنچانک پڑھا تو فرس والے کے لیے یہ والا لو رکارڈ ہے اور یہ والا point high rqord ہے next لیے یہ والا لو رکارڈ ہے اور یہ high rqord ہے next لیے یہ والا لو رکارڈ ہے اور یہ high rqord ہے اس طرح سے آپ نے اس کو populate کر لیا چارو تھریڈ جتنی بھی تھریڈز ہیں ان کے آرگومنٹس آپ کے پاس populate ہو گئے اب آپ نے کیا کرنا ہے تھریڈ کو کریئٹ کرنا ہے یہ بگین تھریڈ کے مدل سے آپ نے یہاں پہنچ تھریڈ کو کریئٹ کیا آپ کی sort تھریڈ ہے اور یہ تھریڈ argument with this index آپ نے اس کو pass کر دیا اب یہ تھریڈ رانو نہیں شروع دیں گے جتنی بھی تھریڈ ہیں and now files time یہ loop چلے گا اور now files جتنی آپ کے تھریڈز جویں وہ رانو دیں گے لیکن یہ جتنی بھی تھریڈز رانو ہی ہیں create suspended ہی ہیں suspended create ہی ہیں آپ نے ان کے create ہوتے ساتھ یہ اس کو ران کرنا نہیں شروع کرتی ہے ابھی ساری suspended ہے جب ساری create ہو جاتی ہیں اس کے بعد پھر ایک loop کے اندر انسانوں کو رزیم کرتے ہیں اسام کیوں کرتے ہیں اس لی کرتے ہیں کہ اگر ایک تھریڈ کا result آجاتا ہے تو اس تھریڈ کا result آجتا ہے اور دوسی تھریڈ کا ابھی وہ create بھی تو اس وجہ سے conflict create ہوگا تو اس conflict کو void کرنے کے لیے جب ساری کی ساری تھریڈز create ہو جاتی ہیں پھر ہم کو رزیم کرتے ہیں رزیم ہوگی اب wait for single object اس کے اندر ہم نے یہ پوری array specify کرتی ہے اب ہم انسانوں تھریڈز کے لیے جو ہے wait کریں جب یہ wait complete ہو جاتا ہے آگے execution جائے گی آگے execution جانے کا مطلب ہے چاروں تھریڈز جو ہے وہ complete ہو گئی ہیں اور پھر ہم کیا کریں گے ان کے حانڈلز ہیں ان کو کلوز کیا جاتا ہے اور فائل کو انمپ کیا جاتا ہے اور یہ باکی دوسری جو garbage collection free close حانڈل ہوگا تو یہ آپ کی ثریڈ تھی جو یہ آپ کا main حانڈلر تھا main حانڈلر نے کیا کیا ہے کہ آپ کی ساری ثریڈز کو create کیا اور پھر آپ کی ساری ثریڈز کو run کیا اور run کرنے کے بعد اس کو اس نے Dwight کیا ہے into chunks اور ہر چانگ کے لیے علاگلک ثریڈ جو ہے اس کو run کیا اچھا ہم نے جس طرح پریوز کیا algorithm کیا نا دوسری کیا تو صرف ہم نے ثریڈ کو run کیا کرنا اب جو ثریڈ run ہو جاتی ہے پھر ہم نے اس کو merge بھی کرنا تو merge کرنے کے لیے ہمارے پس یہ ایک function defined ہے اس کو ہم ثریڈ کے اندری use کریں کس طریقے سے use کریں آپ دیکھ سکتے ہیں جب ایک create ہوتی ہے اس کو arguments پاس ہوتے ہیں low record پاس ہوا high record پاس ہوا اس نے q sort کی مدہ سے اس کے اندر جتنے بھی keys ہے ان کو sort کیا sort کرنے کے بعد یہ یہاں پے wait for single object کرے گا اور wait for single object کیا کرے گا اس کی جو ساتھ ہولی adjacent دوسری جو thread ہے اس کے complete ہونے کے لیے wait کرے گا once وہ complete ہوجاتی ہے تو پھر یہ اس کا result اور اپنا result جو ہے ان دونوں کو merge کر دے گا ہر thread جو ہے اپنی جو adjacent thread اس کے ساتھ جو result ہے اس کو merge کرتی چلی جائے گا اس طرح سے جو بھی اس thread کا result ہوتا ہے ساتھ ہولی thread کے result کے ساتھ merge ہے جو merge کا جو algorithm ہے وہ بڑا سمپل سے اسی طرح کا algorithm ہے کہ اگر آپ کو پس دو sorted list ہیں ایک list اور ایک یہ list sorted ہیں آپ نے ان دونوں کو merge کر کے نئی list کیسے بنانی ہے کہ یہاں پر اگر سے for example 3 ہے یہاں پر 4 ہے یہاں پر 7 ہے یہاں پر 6 ہے تو پہلے 3 جو ہے وہ یہاں پر آئے گا پھر 4 یہاں پر آئے گا پھر 6 آئے گا اور پھر 7 آئے گا تو اس طریق سے یہ وال algorithm جو use کر کے ان کو merge کیا جائے گا اس algorithm کو آپ نے use کیا اس لیے اس purpose کیا اس لیے use کیا ہے تاکہ جو multithreading کا فائدہ اس کو ہم حاصل کر سکیں ان a multi processor environment اس کے اندر کیا ہو گا کہ windows automatically اگر آپ کے پس number of threads اور کوئی processor available ہے تو ایک thread کو اٹھاکے کسی اور دوسرے processor کے ساتھ associate کر دیتی ہے اور اس طرح سے آپ کے multiple threads جویں وہ concurrently run کر پاتی ہیں تو یہ multithreading کا فائدہ ہے windows کی جو strength power of multithreading اس کو آپ اس طریق سے استعمال کر سکتے ہیں تو اس program کے اندر آپ کا ایک single threaded program جہاں وہ صرف ایکی processor کو use کر پاتا ہے جبکہ آپ نے اگر multiple processors کو use کرنا ہے تو اس کو اس طرح سے multithreaded flavor آپ کو دینا پڑتا ہے اس میں یہ دیکھیں زین میں رکھیں کہ جتنی processors ہیں اگر اتنی threads ہوں گی تو جو performance ہوگی وہ best ہوگی جتنے processors ہیں اس سے اگر come threads ہوں گی تو performance improve کیا جا سکتی ہے اور اگر آپ کے پاس ایکی processor ہے اور بہت تھوڑی سی memory ہے تو اس کس کے اندر performance وہ degrade ہوگی degrade اس طرح سے ہوگی کیونکہ جب concurrent processing ہو رہی ہے تو بیچ میں کئی کسم کے conflicts آ رہے ہیں ان conflicts کو resolve کرنے کے لیے کچھ locks ہوگا رہا لگانے پڑتے ہیں تو اس کی وجہ سے delays آتے ہیں تو اگر memory زادہ ہے اور single processor ہے تب بھی program اچھا performance کرے گا اگر multiple processors ہیں تو اور زیادہ اچھا performance کرے گا اگر اتنے processors ہیں جتنے کی threads ہیں تو یہ best performance کرے گا