 بسم اللہ الرحمن الرحیم آج ہم موڈیول 115 دسکس کریں گے موڈیول 115 ہے about thread management ہم اس کے لئے کچھ اور چیزیں دسکس کریں گے regarding thread management اس سے پہلے ہم نے جو چیزیں دسکس کیا تھی وہ بڑے بیسے کسم کے functions تھے ان functions کو use کر کے آپ thread کے بہرہتران کا operation پر پروان کر سکتے ہیں آپ thread create بھی کر سکتے ہیں thread exit بھی کر سکتے ہیں thread terminate بھی کر سکتے ہیں and thread ڈی بھی کر سکتے ہیں handle بھی کر سکتے ہیں جو basic functions thread کے اوپر وہ آپ سارے تقریباً پرفوم کر سکتے ہیں ایک use پرگرام آپ لگ سکتے ہیں for threading دیکھنے در ہم کچھ additional functions دسکس کریں گے اور ان کی بھی آپ کو ضرورت پر سکتی ہے ایک اچھا robust کسم کا پرگرام لکھنے کے لئے تو یہ functions ہم دیکھتے ہیں پہلے function ہے get process id of thread یہ function پہلے available نہیں تھا جو earlier versions ہے windows کے اندر اس کے اندر available نہیں تھا تو programmers کی سانی کے لئے یہ one function higher versions کے اندر available تھا اور یہ function کیا کرتا ہے بڑے ہی simple ڈی کیسے اگر آپ ایک process ڈی سپیسفائے کرتے ہیں اگر آپ ایک thread ڈی سپیسفائے کرتے ہیں تو وہ thread آپ کو بتایا گا کہ وہ thread کس process کے ساتھ لنگٹ ہے اور اس process کا id آپ کو return کرے گا اور اگر آپ اس process کا handle چاہئے تو آپ نے پہلے اسے functions دیکھتے تھے کہ آپ process کے id کے طرف اس کا handle بھی get کر سکتے ہیں یہ thread اور process کی mapping میں آپ کو help کرا ہے کہ آپ اگر ایک thread کا id آپ کو پس کسی وجہ سے موجود ہے تو آپ اس سے process کا id بھی get کر سکتے ہیں عم طور پہ یہ اس طرح کے programs کے اندر use ہوگا جو کہ کسی دوسرے program کے threads کے ساتھ اور processes کے ساتھ اگر انٹریکٹ کرتا ہے ایک program جس کو دوسرے process کی threads اور دوسرے process کے ساتھ انٹریکٹ کرنے کی ضرور پڑتی ہے تو اس طرح کے program کے لیے یہ بڑا useful ہو سکتا اسی طرح دوسرہ function ہے get thread eyeopending flag یہ والا function آپ کو یہ بتایا گا کہ ایک کوئی اگر آپ کے پاس ایک SPECIFIC thread ہے اس کا handle آپ کے پاس موجود ہے تو اس handle کی مدر سے آپ یہ دیکھنا چاہتے ہیں کیا اس thread کے لیے کوئی eye request pending تو نہیں ہے یہ thread کسی block تو نہیں ہوئی for some eye operation جب تک of course جب تک وہ eye operation کمپلیٹ نہیں ہوتا یہ thread جو ہے آگے اپنی execution رزیم نہیں کر سکتی اگر وہ eye operation جو ہے وہ synchronous nature کا تو جو بھی اس کا status ہوگا اگر وہ eyeo کے لیے wait کر رہی ہے تو اس کا جو بھی status ہوگا یہ والا function جو ہے return کر دے گا اور یہ ہار instance پہ اور بڑی تیدی سے یہ status جو ہے یہ چینج کر رہا ہو سکتا ہے ہو سکتا ہے کہ وہ ابھی ایک split second پہلے جو تھا process block تھا thread block تھی اور ایک دم سے پھر وہ running straight کے اندر چلی جائے تو یہ جونجو آپ کی thread progress کری ہے کبھی اس کا کچھ status ہوگا کبھی اس کا کچھ status ہوگا تو یہ all the time جو ہے نا status change ہو رہا ہے اگر کسی ایک instance کے پر آپ اس کا status چیک کرنا چاہتے ہیں تو یہ آپ کو function جو ہے اس میں help کرے گا اس کے لیوہا آپ کو کئی دفعہ ضرور پڑھ سکتی ہے ایک thread کو pause کرنے کے لیے اور پھر جو آپ نے thread pause کیوی ہے اس کو پھر سے continue کرنے کی ایسا کرنے کے لیے windows جو ہے وہ اپنے پاس ایک suspend count جو ہے وہ maintain کر کرکتا ہے ہر thread کے لیے اس کے پاس ایک suspend count ہوتا ہے اور ایک thread صرف تبھی run کری ہوتی ہے running straight کے اندر ہوتی ہے جب اس کا suspend count ہے وہ zero اگر greater than zero ہے تو اس کے اس کے اندر وہ thread suspend ہو جاتی ہے روک جاتی ہے pause کا جاتی ہے اس کی execution وہ روک جاتی ہے اور روکی رہے گی جب تک اس کا count پھر سے zero نہیں ہو جاتا ہے تو یہ suspend count جو ہے یہ کیسے چینج کیا جاتا ہے اس کو چینج کرنے کے لیے windows کی certain ap is available آپ اس count کو increment بھی کر سکتے ہیں آپ اس count کو decrement بھی کر سکتے ہیں عام طور پہ جب آپ thread کو create کرتے ہیں تو اس کا suspend count جو ہے وہ zero ہوتا ہے لیکن آپ نے ایک اور بھی option دیکھتی کہ جب thread کو create کرتے ہیں تو create کرتے وقت آپ کہتے ہیں کہ جی وہ suspended state کے اندر create ہو تو اس کی suspend count one ہو گی اور پھر آپ کو اس کو کسی طرح سے zero کرنا بڑے گا decrement کرنا بڑے گا اور پھر وہ اپنی execution جو ہے start کر سکی گی resume کر سکی گی تو دیکھتے ہیں کہ ان کو ہم کیسے increment کیا decrement کر سکتے ہیں اس کے لئے اگبہ سمپلی دو API is available ایک API ہے that is resume thread resume thread کی API ہے اس کو آپ thread کا handle pass کریں گے یہ کیا کرے گی count کو decrement کرے گی جب بھی آپ resume thread کریں گے count کو decrement کرے گی suspend count کو اگر count کی value is not as equals to zero اور آپ کو return کیا کری ایک d word return کری اس d word کی انتر کیا ہوگی count کی previous value ہوگی suspend count کی previous value ہوگی ان case count zero ہو جاتا decrement کرنے کے بعد count zero ہو جاتا تو اس case کے اندر thread ہے اس کی execution resume کر جائے گی بالکل اس کا inverse جو function ہے that is suspend thread اس کو بھی آپ اسی طرح thread کا handle pass کریں گے یہ کیا کرے گا suspend count کو ایک increment کرے گا اگر zero ہے تو of course وہ one ہو جائے گا one ہونے پے اس کی execution suspend ہو جائے گی اور یہ بھی اسی طرح سے جو بھی اس suspend count کی previous value تھی اس previous value کو return کرے گا