Asynchronous method invocation
ملٹی تھریڈڈ کمپیوٹر پروگرامنگ میں، اسنکرونس میتھڈ انوکیشن (اے ایم آئی)، جسے اسنکرونس میتھڈ کالز یا اسنکرونس پیٹرن بھی کہا جاتا ہے، ایک ڈیزائن پیٹرن ہے جس میں کال شدہ کوڈ کے ختم ہونے کا انتظار کرتے ہوئے کال سائٹ کو بلاک نہیں کیا جاتا ہے۔ اس کے بجائے، جواب آنے پر کالنگ تھریڈ کو مطلع کیا جاتا ہے۔ جواب کے لیے رائے شماری ایک ناپسندیدہ آپشن ہے۔ پس منظر AMI کسی شے کے ممکنہ طور پر طویل عرصے تک چلنے والے طریقوں کی غیر متزلزل دعوت کے لیے ایک ڈیزائن پیٹرن ہے۔ یہ 1996 میں ایلن ورمیولن کے بیان کردہ آئی او یو ("میں آپ کا مقروض ہوں") پیٹرن کے مساوی ہے۔ زیادہ تر پروگرامنگ زبانوں میں ایک کال شدہ طریقہ ہم وقت پر انجام دیا جاتا ہے، یعنی۔ پھانسی کے دھاگے میں جس سے اسے طلب کیا جاتا ہے۔ اگر طریقہ کار مکمل ہونے میں کافی وقت لگتا ہے، مثال کے طور پر۔ کیونکہ یہ انٹرنیٹ پر ڈیٹا لوڈ کر رہا ہے، کالنگ تھریڈ کو اس وقت تک بلاک کر دیا جاتا ہے جب تک کہ طریقہ کار ختم نہ ہو جائے۔ جب یہ مطلوب نہ ہو تو "ورکر تھریڈ" شروع کرنا اور وہاں سے طریقہ کار کو اپنانا ممکن ہے۔ زیادہ تر پروگرامنگ ماحول میں اس کے لیے کوڈ کی بہت سی لائنوں کی ضرورت ہوتی ہے، خاص طور پر اگر اوور ہیڈ سے بچنے کے لیے خیال رکھا جائے جو بہت سے دھاگے بنانے کی وجہ سے ہو سکتا ہے۔ اے ایم آئی اس مسئلے کو اس طرح حل کرتا ہے کہ یہ ایک ممکنہ طور پر طویل عرصے سے چلنے والے ("مطابقت پذیر") آبجیکٹ طریقہ کو "اسنکرونس" قسم کے ساتھ بڑھاتا ہے جو فوری طور پر واپس آتا ہے، اضافی طریقوں کے ساتھ جو تکمیل کی اطلاع حاصل کرنا، یا بعد میں تکمیل کا انتظار کرنا آسان بناتا ہے۔ وقت اے ایم آئی کا ایک عام استعمال فعال آبجیکٹ ڈیزائن پیٹرن میں ہے۔ متبادل سنکرونس طریقہ کی دعوت اور مستقبل کے آبجیکٹ ہیں۔ اے ایم آئی کا استعمال کرنے والی ایپلی کیشن کی ایک مثال ایک ویب براؤزر ہے جسے تمام تصاویر لوڈ ہونے سے پہلے ہی ویب پیج ڈسپلے کرنے کی ضرورت ہوتی ہے۔ چونکہ طریقہ کار طریقہ کار کا ایک خاص معاملہ ہے، اسنکرونس طریقہ کار کی دعوت اسنکرونس طریقہ کار کال کا ایک خاص معاملہ ہے۔ نفاذ جاوا کلاس فیوچر ٹاسک کلاس جاوا میں اسی مسئلے کو حل کرنے کے لیے واقعات کا استعمال کرتی ہے۔ یہ نمونہ اے ایم آئی کی ایک قسم ہے جس کے نفاذ میں زیادہ اوور ہیڈ ہوتا ہے، لیکن یہ سافٹ ویئر اجزاء کی نمائندگی کرنے والی اشیاء کے لیے مفید ہے۔ . NET فریم ورک اسنکرونس پروگرامنگ ماڈل (APM) پیٹرن (. NET فریم ورک 2.0 سے پہلے استعمال کیا گیا) ایونٹ پر مبنی اسنکرونس پیٹرن (EAP) (. NET فریم ورک 2.0 میں استعمال کیا گیا) ٹاسک پر مبنی اسنکرونس پیٹرن (ٹی اے پی) (. NET فریم ورک 4.0 میں استعمال کیا گیا) مثال مندرجہ ذیل مثال. NET فریم ورک میں استعمال ہونے والے معیاری AMI سٹائل پر مبنی ہے۔ ایک طریقہ ایکمپلیش کو دیکھتے ہوئے، دو نئے طریقے شامل کیے جاتے ہیں: کلاس ایکسمپل {رزلٹ ایکمپلیش (آر جی ایس۔) آئی اے سنک ریسلٹ بیگن ایکمپلیش (آر جی ایس۔) رزلٹ اینڈ ایکمپلیش (آئی اے سنک ریسلٹ اے)۔} بیگن ایکمپلیش کو کال کرنے پر، کلائنٹ کو فوری طور پر اسنک ریسلٹ قسم کا ایک آبجیکٹ موصول ہوتا ہے (جو آئی اے سنک ریسلٹ انٹرفیس کو لاگو کرتا ہے)، تاکہ وہ کالنگ تھریڈ کو غیر متعلقہ کام کے ساتھ جاری رکھ سکے۔ آسان ترین صورت میں، آخر کار اس طرح کا کوئی کام نہیں ہوتا ہے، اور کلائنٹ اینڈ ایکمپلیش (پہلے موصول شدہ آبجیکٹ کو پاس کرنا) کو کال کرتا ہے، جو اس وقت تک بلاک کرتا ہے جب تک کہ طریقہ کار مکمل نہ ہو جائے اور نتیجہ دستیاب نہ ہو جائے۔ اسنک رزلٹ آبجیکٹ عام طور پر کم از کم ایک ایسا طریقہ فراہم کرتا ہے جو کلائنٹ کو یہ سوال کرنے کی اجازت دیتا ہے کہ آیا طویل عرصے سے چلنے والا طریقہ پہلے ہی مکمل ہو چکا ہے: انٹرفیس IAsyncResult {bool HassCompleated ().} کوئی بھی کال بیک کا طریقہ بیگن ایکمپلیش کو بھی منتقل کر سکتا ہے، جسے طویل عرصے سے چلنے والا طریقہ مکمل ہونے پر استعمال کیا جائے گا۔ یہ عام طور پر طویل عرصے سے چلنے والے طریقہ کار کی واپسی کی قیمت حاصل کرنے کے لیے اینڈ ایکمپلیش کو کال کرتا ہے۔ کال بیک میکانزم کے ساتھ ایک مسئلہ یہ ہے کہ کال بیک فنکشن قدرتی طور پر ورکر تھریڈ (اصل کالنگ تھریڈ کے بجائے) میں انجام دیا جاتا ہے، جو ریس کے حالات کا سبب بن سکتا ہے۔ . NET فریم ورک دستاویزات میں، ایونٹ پر مبنی اسنکرونس پیٹرن کی اصطلاح ایک متبادل API سٹائل (. NET 2 کے بعد سے دستیاب) سے مراد ہے جس میں بیگن ایکمپلیش کے بجائے ایکمپلیش اسنک نامی طریقہ استعمال کیا جاتا ہے۔ ایک سطحی فرق یہ ہے کہ اس انداز میں طویل عرصے سے چلنے والے طریقہ کار کی واپسی کی قیمت براہ راست کال بیک طریقہ کار میں منتقل کی جاتی ہے۔ اس سے بھی زیادہ اہم بات یہ ہے کہ اے پی آئی کال بیک کے طریقہ کار کو چلانے کے لیے ایک خاص طریقہ کار کا استعمال کرتا ہے (جو ایکومپلیش کمپلٹڈ قسم کے ایونٹ آبجیکٹ میں رہتا ہے) اسی دھاگے میں جس میں بیگن ایکومپلیش کو بلایا گیا تھا۔ یہ ریس کے حالات کے خطرے کو ختم کرتا ہے، جس سے اے پی آئی کو استعمال کرنا آسان اور سافٹ ویئر کے اجزاء کے لیے موزوں بناتا ہے ؛ دوسری طرف پیٹرن کا یہ نفاذ اضافی آبجیکٹ تخلیق اور اوور ہیڈ مطابقت پذیری کے ساتھ آتا ہے۔ حوالہ جات مزید پڑھنا C #تھریڈز (کمپیوٹنگ) سافٹ ویئر ڈیزائن پیٹرن میں غیر متزلزل طریقہ کالز کا استعمال کرتے ہوئے