 اسم اللہ الرحمن الرحیم، اب آج ہم موڈیول 118 دسکس کریں گے اس موڈیول کے اندر ہم ایک اگزامپل دسکس کریں گے وہ اگزامپل ایک نمبر of فائلز ہیں ان فائلز کے اندر ایک پیٹن سرچ کرے گی اور وہ ملٹیثریڈڈ تریکس ہے اس پیٹن کو سرچ کیا جائے گا یعنی کہ کافی اس کے اندر سمپلیفکیشن ہوتے گی آپ کئی ساری فائلز کو بڑے ہی سمپلیفائیٹ تریکس ہے جو ان کو مانج کر سکیں گے اس سے پہلے بھی ہم نے کچھ پیٹن سرچن کے پوگرام لکھے دے اس کے اندر ہم نے ملٹی تاسکن کا بھی استمال کیا تھا اس کو اپٹمائس کرنے کے لیے اب ہم ملٹی تاسکن کو نہیں use کرے اب ہم ملٹیثریڈڈن کو use کرے ملٹی پل تریکس کی مدد سے ہم ایک بڑے ہی اپٹیمل تریکس ہے پوگرام جو ہے اس کو لکھنے کی کوشش کر رہے ہیں اس پوگرام سے ہمیں یہ بتا چلتا ہے کہ ملٹی پل جو تھریڈڈز ہیں وہ کن کرنڈلی انپرٹ اوپرٹ اپریشن پر فرم کر سکتی ہے جبکہ اور دوسی کوئی تھریڈ یا اور کوئی مین پوگرام جو ہے وہ کمپیٹیشنز کر سکتا اور اس تریکس سے اس انپرٹ اوپرٹ جو ہے وہ اچیب ہو سکتی ہے اس انپرٹ اوپرٹ یہ ہوتی ہے کہ انپرٹ اوپرٹ کے لیے جو کمپیٹیشن ہے وہ رکتی نہیں ہے کمپیٹیشن بھی چلتی رہتی ہے اور انپرٹ اوپرٹ بھی چلتی رہتی ہے دونوں کی اولاپنگ ہوتی ہے یعنی کہ کیبورڈ ہے کیبورڈ سے آپ انپرٹ لیتے ہیں گیٹس کا فنکشن ہے اس کے ترو آپ کیبورڈ سے انپرٹ لیتے ہیں تو ایکزیکیوشن رکھ جاتی ہے جب تک آپ انپرٹ نہیں لیتے ہیں ایکزیکیوشن آگے نہیں جاتی ہے یہ ایک طرح کی سنکرونس انپرٹ اوپرٹ ہے ایک سنکرونس ایسے ہے کہ آپ اپنے پوگرام کو ران کر رہے ہیں ساونڈ کارٹ پر ایک ساونڈ بھی پلے ہو رہی ہے ساونڈ کارٹ بھی اپنی انپرٹ اوپرٹ پر فرم کر رہا ہے اور ساتھ آپ اپنی کمپٹیوشنز بھی پر فرم کر رہے ہیں تو اس طرح سے یہ والا موڈل ایچیب کیا جاتی ہے یعنی کہ کئی ساری ہمارے پاس ٹھرڈ ہیں جو فائلز کے اوپرٹ انپرٹ اوپرٹ اوپرٹ پر فرم کر رہی ہیں اور کچھ ٹھرڈ وہ کمپٹیوشنز پر فرم کر رہی ہیں اگر ہمیں دیکھیں تو ہمیں کیا نظر آ رہا ہے ہمیں نظر آ رہا ہے کہ سنکرونس انپرٹ اوپرٹ پر فرم ہو رہی ہے کمپٹیوشنز بھی ہو رہی ہیں اور ساستھ انپرٹ اوپرٹ اوپرٹشنز بھی پر فرم ہو رہے ہیں یہ پرگرام جہاں اس کو مختلف نمبر of فائلز سبرل فائلز جہاں پروائیڈ کی جاہ سکتی ہیں اور یہ کیا کرے گا ان فائلز کے اندر ایک جو پیٹن وہ سرچ کرے گا ہر فائل کے اندر سرچ کرنے کے لیے وہ ایک ٹھرڈ رن کر دے گا اور وہ ٹھرڈ جو ایک سپسیف ایک پیٹن کو اس فائل کے اندر سرچ کر دی رہ گی اس سے میں یہ پہلے چل رہا ہے کہ فائلز جہاں جب ہم ریڈ کو اپریشن پر فرم کرتے ہیں تو ریڈ کو اپریشن جہاں ہوتا ہے یہ کنکرنڈلی پر فرم کر جا سکتا ہے ایک فائل کو کئی سارے پروسسز سے ایٹی ٹائم ریڈ کر سکتے ہیں اور آپ کئی ساری فائلز بھی ایٹی ٹائم ریڈ کر سکتے ہیں جو آپ نے رائیٹ کرنا ہوتا ہے کسی فائل کے اوپر اور کئی سارے پروسسز ایٹی ٹائم ایک فائل کے اوپر رائیٹ کرنے تب کچھ پروسز رائیز ہوتی ہیں لیکن یہاں پہ ہمارے پاس ایسی کوئی پروسلم نہیں ہے ہم نے صرف کئی ساری فائلز کو ایٹی ٹائم کئی ساری ٹھرڈز کی مدد سے ہم نے ریڈ کرنا پھر جو آپ این فائلز کو ریڈ کرتے جائیں گے آپ جس مچ کو سرچ کرنے جس پیٹن کو سرچ کرنے وہ آپ کو پیٹن مل جاتا ہے ساتھ اساتھ وہ پیٹن جو ہے وہ رپورٹ بھی ہوتا جائے گا وہ ألک سے ایک فائل کے اندر کیلے کہ تمبریری فائل کی اندر سٹور بھی ہوتا جائے گا اور جنو اللہ اسٹور ہوتا جائے گا ساتھ وہ رپورٹ بھی ہوتا جائے گا جو مین ہے پغیم ہے وہ جو بھی پیٹنز بل رہا ہے اس پوگرام کے اندر آپ یہ سٹرکچر دیکھ سکتے ہیں اس سٹرکچر کے اندر ایک آرگومنٹ کانٹ اور آرگومنٹ ویلیو تو یہ ہمارا تھریڈ آرگومنٹ ہے ایک تھریڈ کو ہم یہ والا آرگومنٹ جو ہے یہ پاس کریں گے یہ جو ادھر پیرامیٹر ہم نے بنایا جو پروٹوٹائیب بنایا یہ پروٹوٹائیپ ہماری تھریڈ کا پروٹوٹائیپ ایک ہم ٹی اچ گرپ کے نام سے ہم ایک تھریڈ بنا رہے ہیں اور اس تھریڈ کو پھر جو ہے ہم use کریں گے پیٹنس کو سرچ کرنے کے لیے یہاں پر مختلف اور سٹارٹ اپ انفو جب ہم نے پروسیس کریٹ کرنا پروسیس انفرمیشن کا سٹرکچر ہے پروسیس کرنے کے لیے تو ساتھ ہمیں پروسیس کو بھی کریٹ کرنے کی ضرور پڑے گے وہ ابھی ہم دیکھتے ہیں کیسے ہم ضرور پڑتی ہے یہ سٹارٹ اپ انفرمیشن سٹارٹ اپ کے اندر کلیس کر دی آپ نے یہاں پر آرگومنٹ کانٹ لیے بیسکلی ہوئے رہا ہے کہ آپ کمار نائن سے پیرامیٹرز دے رہے ہیں اور جو کوبھی پیرامیٹرز ہیں اس کے اندر آپ فائل س پیسفائے کر رہے جنجن فائلس کے اندر سرچ کرنا اور پھر آپ ہر فائل جو ہر فائل کیلئے جتنی آپ دیکھیں گے کتنی فائلس آپ نے انپرٹ کیا جتنی بھی فائلز انپرٹ ہوں گی ہر فائل کیلئے ایک ٹریڈ ران ہو جائے گا یہ لوپ ہے یہ لوپ کتنی دفعہ چلے گا آرگومنٹ کانٹ مائنس دو ٹائمز یہ لوپ چلے گا اور کیوں چلے گا پہلے دو پیرامیٹرز جو وہ فائل کا نام ہے جو پروسیس کا نام ہے اور ساتھ پیرامیٹرز آنورد آپ کے فائل نیمز ہیں تو کتنے فائل نیمز ہوں گے جدنا کانٹ مائنس ٹو تو آپ کے پاس ٹوٹل نمبر of فائلز آجیں گی جتنی فائلز ہیں اتنی دفعہ یہ لوپ چلے گا اب اس لوپ کے اندر آپ کیا کریں آپ ہر ایک کا جو فائل نیم ہے اس کو کوپی کرے رہے ہیں ویلو لے رہے ہیں اور اس کو آپ کوپی کرے رہے ہیں اور اس کے لئے ایک ٹمپریری ہی ہر ایک فائل کیلئے آپ ایک ٹمپریری فائل بھی کرییٹ کریں یہاں ساتھ اس کی سپسکٹ لگا کے آپ ایک ٹمپری فائل بھی کرییٹ کریں ایسا کرنے کے بعد آپ جو آرگومنٹس اپنی ٹھریٹ کو پاس کریں گے آپ وہ بھی جو ہے پرپیر کریں پہلے جو آرگومنٹ پاس کریں وان اس کے اندر آپ کا پیٹن آجے گا دوسر جو آرگومنٹ پاس کریں اس کے اندر آپ کی سرچ کرنی جس فائل کو سرچ کرنے وہ اس فائل کا نام آ جائے گا کس فائل کے اندر اس کو سرچ کرنے چوتھے پیرمیٹر کے اندر کاؤنٹ آ جائے گا ایک کتنے اس کے اندر آرگومنٹس ہیں اب آپ کیا کرتے ہیں کہ ایک ٹھریٹ کریٹ کرتے ہیں بگین ٹھریٹ ٹییکس کی مدل سے جو آپ نے ٹھریٹ کریٹ کیا ہے اس کا یہ نام ہے ٹییچ گریپ یہ بلہ جو function ہے یہ as a thread run ہونا شروع ہو جائے گا جو آرگومنٹ لیسٹ آپ نے تیار کی تھی وہ آپ اس کو ساتھ پاس کریں اور اس کا جو بھی حنڈل آئے گا وہ یہاں پے ایک اور ایک اندر store ہو جائے گا اس طرح آپ اس loop کو چلائیں گے کتنی دفعہ چلے گا جتنے آپ نے فائل نیم سپیسفائے کیا جتنی آپ نے فائل سپیسفائے کیا ہر فائل کے لیے ایک thread run ہو جائے گی دس اگر آپ نے فائل سپیسفائے کیا آپ کی دس thread run ہو جائیں گی ہر thread جو ہے وہ ایک فائل ایک SPECIFIC فائل میں سے دیتا جو ہے پاتنٹ جو ہے اس کو سرچ کرے گی اس کے بعد آپ نے یہ standard output file standard ڈائرر فائل اور flags وغیرہ کو سیٹ کیا ایسا کرنے کے بعد آپ کا یہ loop ہے یہ loop دیکھیں ایک important ہے یہاں پے wait for multiple objects کا رہا اور کتنے objects ہیں اس کے اندر t handle آپ یہاں پہ سپیسفائے کریں یہ وہ array ہے جس کے اندر آپ نے سارے threads کے handle store کیا میں اور کتنے handle ہیں وہ بھی آپ کے پاس information available ہے وہ thread count کے اندر آپ نے information رکھ دیا argument c-2 یا آپ نے thread count کے اندر رہا دیا تو اتنے آپ کے پاس objects ہیں جس کے اوپر کے اس نے wait کرنا یہ wait کرے گا اور جو ہی wait ختم ہوتا ہے تو یہ یہاں سے exit code لے سکتا ہے exit code اس کو ملے گی اسے پتا چاہتے لے گا کیس وجہ سے wait ختم ہویا اور جو handle ہے اس کو آپ close کر سکتے ہیں جو thread کا handle ہے اس کو ساست garbage collection ڈائر بھی کرنی ہے تو آپ نے thread کو ساست close بھی کر دینا اور پھر جس دوران آپ wait کریں یہاں پہ آپ نے کیا کیا کہ ایک create process کر دیا اور جب create process کیا تو ایدر آپ نے یہاں پہ process info سپیسفائے کیا process info کے اندر آپ نے یہاں پہ آپ نے create process کیا اور جب create process کیا آپ نے ساستی start up information جو شروع میں آپ نے start up کی تھی وہ آپ نے set کر دی اس کی مدد سے آپ کو یہ ایک handle receive ہو رہا آپ یہاں پہ return code receive اور اس return code کو آپ دیکھ رہے ہیں کہ جی کوئی ڈائر تو نہیں اکروا اور پھر جو handle receive ہے وہ each process کے اندر اس process کا handle جو ہے وہ each process کے اندر ہے اب آپ اس کے اوپر wait کرے ہیں wait for single object اس طرح سے کیا ہے کہ آپ کا main process ہے اس کی execution روکی رہے گی جب تک اس کی execution complete نہیں ہوتی ہے اور جو ہی execution complete ہوتی ہے تو آپ close handle کرتے ہیں process کو بھی close کرتے ہیں اور thread کو بھی close کرتے ہیں تو اس طرح سے آپ کا main ہے main thread جو ہے وہ چلتی رہے گی چلتی رہے گی جب تک اس طرح جو ہے ان کی completion نہیں ہوتی ہے اور جو آپ کا thread کا function ہے یہ thread کا function in all کیا کام کر رہا ہے اس کا کام بڑا simples ہے یہ ایک code ہے بڑی مشہور سی code ہے اور یہ code جو ہے patterns کو search کرنے کیلئے use ہوری ہے اس کو آپ pattern specify کریں گے pattern match اس کے function ہے open file function ہے prepare search string یہ مختلف functions کو use کر کے اس کی code جو ہے بڑی simple ہے آپ جو بھی pattern ہے اس کے اندر specify کر کے آپ اس کو search کر سکتے ہیں اور یہ just thread جو ہے یہ all the time آپ اس کو ایک file specify کریں گے open file آپ اس کو ایک file specify کرتے ہیں یہ اس file کو open کر دیتا ہے اور اس open file کیوں اندر جو اس کو handle receive ہوتا ہے اس file کو read کرتا جائے گا اور یہاں پہ open file کرتا ہے ایک file کرتا ہے اور file open کرنے کے بعد یہ for loop کے اندر just یہ pattern search کرتا جائے گا اور جو بھی patterns اس کو ملتے ہیں ان patterns کو یہ report کرے گا اور ایک structure کے اندر یہ patterns جو ہے store ہو جائیں گے وہ structure جو ہے آپ کی temporary file میں جاکے آپ کی temporary file میں جاکے save ہو جائے گا یہ جو pattern matching والا code ہے یہ ہم already پہلے بھی تسکر سکر چکے ہیں اس کا اگر آپ overall control دیکھیں اس program کا تو this program جو ہے کچھ اس طریقے سے work ہے کہ یہ ایک آپ کے پاس main thread ہے کہنے کے یہ main thread ہے main thread run ہو رہی ہے اور جا main thread run ہو رہی ہے تو اس دوران وہ کیا کرتی ہے اور threads run کرتی ہے جتنی اس کو files رسیو ہی ہے ہر file کے لیے وہ thread run کرنا شروع کر دیتی ہے اب یہ thread ساری بالکل سیم تریکہ سے work کر رہی ہے ایک ایک algorithm ہے جو algorithm اس کے اندر search کرا pattern کو جو بھی آپ نے اس کو pattern specify کیا وہ search کرا جو ہی اس کو اگر کو pattern receive ہوتا تو ملتا تو یہ اس pattern کو ایک temporary file کے اندر place کر دیتا ہے اس کے لیے علک temporary file بنیوی ہے یہ اپنی temporary file کے اندر place کر دیتا ہے یہ اپنی temporary file کے اندر place کر دیتا ہے یہ اپنی temporary file ہے اور جو اس کے اندر change ہی ہے وہ یہ main کو report کرتا main thread کو call کرنے کے بعد just کیا کرا wait کرا اس کی execution رکی ہوئی ہے اور جب یہ ساری threads return کر دیں گی تو اس کی execution جو ہے وہ complete ہوگی اور in the end result آپ کے پاس کیا آئے گا آپ کے پاس کیساری temporary files ہوں گی جس کے اندر آپ کو matches ملیں گے اور اس کے علاوہ جو جو matches مل رہے ہیں ساتھ ہی ساتھ جو main process ہے وہ بھی ان matches کو display کرتا جائے گا