 اسم اللہ الرحمن الرحیم آج ہم موڈیول 109 دسکس کریں گے موڈیول 109 ہے تھریڈ اورویو اس میں ہم کچھ تھریڈز کے بارے میں کچھ انفرمیشن دسکس کریں گے جو بیسک انفرمیشن ہم تھریڈ ایسچ کیا چیز ہوتی ہے آپ نے تھریڈنگ نام سونا ہوں گا شاید کوئی ایسے پکرام بھی لکھیں ہوں جو تھریڈنگ use کرتے ہیں تھریڈ کو اگر ہم دفائن کریں تو ہم کہیں گے تھریڈ is a unit of execution یہ ایک ایسا unit ہے جس کے اندر آپ کو پکرام کی execution ہوتی بھی نظر آتی ہے تو اس کو سمپل ورڈز کے اندر اسی طرح سے دفائن کے ایسا سکتا ہے کہ تھریڈ is a unit of execution اور سرطن کسیس کے اندر آپ کو ایسا بھی پکرامز نظر آتے ہیں جس کے اندر آپ کو observ کریں تو پتہ لگے ایسا مصوص ہوتا ہے کہ اس کے اندر ایک unit of execution نہیں ہے اس کے اندر multiple unit of execution ہے اگر آپ کا پلاٹفوم اس طرح کیا ہے جس کے اندر multiple units of execution ہو سکتے ہیں تو وہ پلاٹفوم کلاتا ہے multi-threaded system جس کے اندر ایک وقت میں multiple threads ران ہو سکتی ہیں تو windows جو ہے وہ ایک multi-threaded system ہے ایک process کے اندر multiple threads ران ہو سکتی ہیں آپ کو multiple flow of execution نظر آ سکتے ہیں multiple units of execution نظر آن گے پھر اگر آپ کے پاس multiple threads ہیں تو ان کو اپس میں coordinate کرنا ان کو اپس میں synchronize کرنا ان کا اپس میں link کرنا information pass کرنا یہ بھی ایک challengeing task ہے تو اس کا بھی کوئی mechanism ہونا چاہیے کہ جس کے threads وہ اپس میں coordinate کر سکیں کچھ ایسے ہی programming problems ہوتی ہیں جو کہ threading سے بڑی ہی simplifier ہو جاتے ہیں اگر آپ اس کو single threaded طریقے سے solve کرنے کی کوشش کریں تو آپ کو بڑا complicated کسم کا program بنا رہنا پڑھے گا اور پڑھا نہیں اس کے اندر complicated program بنا رہنے کے بعد بھی آپ اس میں کس حتہ کامیاب ہون گے لیکن multi-threaded سے وہ problem بڑے ہی simple طریقے سے بڑے ہی سادے انداز سے few functions لکھیں اور ان کو multi-threaded طریقے سے run کر کے وہ problem جو ہے بہت ایزیلی result ہو جاتی ہیں تو جو conventional scenario ہے اس conventional scenario کے اندر کیا ہوتا ہے کہ آپ کا جو process ہے وہ single threaded ہوتا ہے اس کے اندر ایک unit of execution run ہو رہا اور operating system ہے وہ multi-processing ہے یعنی کہ ایک وقت میں کئی processes at a time run ہو سکتے تو اس scenario کے اندر few disadvantages ہیں مختلف کسم کے disadvantages آپ اس میں observe کر سکتے ہیں for example, ایک disadvantage یہ ہے کہ جب آپ ایک process ہے کسی دوسرے process کے پر switching کریں تو اس جو switching کا overhead ہے that is very high ایک process کی information پہلے save ہوتی ہے وہ کافی ساری information ہے اس کا context ہے اس کی memory کے بارے میں information ہے اس کے process کے بارے میں information ہے وہ ساری save ہوتی ہے اور پھر دوسرے process کی information ہے وہ restore ہوتی ہے اور پھر دوسرے process کی execution start ہوتی ہے تو context switching ہوتی ہے context switching کا overhead ہے وہ in case of among processes that is very high پھر independent جو processes ہوتی ہیں وہ عم طور پر independent ہے ان کی اپنی اپنی information ہے اپنا اپنا data ہے تو وہ اپس میں tightly covered نہیں ہوتے information ہوتی ہے ہرے کی اپس میں ایک دوسرے سے hidden ہوتی ہے تو threads ہوتی ہے وہ ایک دوسرے کی information processes وہ ایک دوسرے کی information use نہیں کر سکتے اگر آپ نے ایک دوسرے کی information share کرنی ہے تو اس کے لیے آپ کو ایک بڑا complicated mechanism بنانا پڑے گا threads کی case میں ایسا نہیں ہوتا threads جو ہے وہ ایکی process کا part ہے اور اس process کی جتنی information ہے وہ ساری threads جو ہے ان کو share کر رہی ہیں پھر اس کے لیوہ جب آپ single threaded processes کی بات کرتے ہیں تو single threaded processes جو کہ concurrently run کرنے ہیں اس صورت میں آپ نے پڑا operating system کے اندر کئی کسم کی problems arise ہوتی ہیں جس میں ایک synchronization problem ہے ایک mutual exclusion کی problem ہے پھر ان problems کو resolve کرنے کے لیے گئی طریقے ہوتے ہیں جب ان problems کو آپ resolve کرتے ہیں تو اس کے وجہ سے certain overheads وہ increase ہو جاتے ہیں processes block ہو جاتے ہیں processes کی execution رکھ جاتی ہے at certain point وہ آگے proceed نہیں کر پاتے اور وہ ایک طرح کا overhead ہے ایک طرح کا computational time ہے آپ کی CPU کا وہ ان کاموں میں waste ہوتا پھر آپ نے اگر کوئی asynchronous tasks perform کرنے ہیں asynchronous tasks جیسے for example sound card سے sound ہاری ہیں تو ایک single threaded program کے اندر asynchronous tasks perform کرنا جو ہے وہ بڑا complicated ہو جاتا ہے کہ single threaded process جو اپنی computations بھی کرتا رہے اور asynchronous operations ان کو بھی ساتھ ساتھ perform کرتا رہے یہ کام تھریڈنگ سے بڑا سان ہوتا ہے آپ asynchronous overlapping operations وہ concurrently perform کر سکتے ہیں using multi threading پھر اگر آپ کے پاس multi processor environment ہے تو multi processor environment کو آپ more optimally use کر سکتے ہیں in case اگر آپ کو system multi threaded ہے rather than your system single threaded وہ بھی multi processor environment کو فیضہ اٹھا سکتے ہیں لیکن اچھا اچھا اچھا useful اچھا optimal نہیں ہوگا جتنا کے آپ کا ایک multi threaded system ہوگا