پہلی نظر میں، متوازی پروسیسنگ آواز مفت دوپہر کے کھانے کے دعوت نامے کی طرح - کثیر کور CPU استعمال کرنے کے قابل ہونے کے قابل ہونے سے زیادہ مؤثر طریقے سے آپ کے کوڈ کو زبردست رفتار فروغ دینا چاہئے. عملی تجربے سے پتہ چلتا ہے کہ یہ ہمیشہ کیس نہیں ہے: متوازی کرنے کے لئے کچھ مسائل ناممکن ہیں. اس کے علاوہ، متوازی عملدرآمد نئے مسائل کے پورے خاندان کو لے جاتا ہے جو واحد کور مشینوں پر نہیں دیکھا جاتا ہے.
متوازی کوڈ، اصول میں، کام کے دو گروپوں میں ٹوٹ ڈال سکتا ہے. پہلا گروپ کلاسک رفتار میں اضافہ ہے - اگر آپ کا پروگرام 3000 تصاویر سے گزرنا پڑتا ہے، تو اس کا مطلب یہ ہے کہ کسی بھی وقت زیادہ تصاویر پر عملدرآمد کی جا سکتی ہے. یقینی طور پر فائدہ مند، اس قسم کا کام ہر روز ویب ترقی میں کم از کم کا سامنا ہے. (اگر آپ ایک تصویری بھاری سائٹ بنا رہے ہیں، تو اس بات کو یقینی بنائیں کہ آپ ان کو مہذب کے ساتھ واپس آتے ہیں کلاؤڈ اسٹوریج ).
متوازی نوکری کا زیادہ عام شکل طویل عرصے سے چلنے والے کاموں کے ارد گرد کام کرتا ہے جس میں زیادہ سی پی یو وقت کی ضرورت نہیں ہے. اس کے لئے ایک اچھی مثال ایک ڈاؤن لوڈ یا کسی قسم کے آلے کے ان پٹ کے لئے انتظار کر رہے ہیں: اگر یہ ایک متوازی فیشن میں کیا جاتا ہے، باقی GUI کو بلاک کرنے کی ضرورت نہیں ہے. اس بات کو سمجھا جاتا ہے کہ صارفین کو سمجھنے کے لۓ 'بٹن پر کلک نہیں کیا جاتا ہے'، یہ صارف کی اطمینان میں اضافہ کر سکتا ہے یہاں تک کہ اگر اصل رفتار میں اضافہ نہیں ہوتا ہے.
اگر آپ کو آپ کو کوڈ ہوشیار بنانے میں مدد کرنے کے لئے کچھ نئے وسائل کی ضرورت ہوتی ہے تو، ہمارے گائیڈ کو بہترین کرنے کے لئے چیک کریں ویب ڈیزائن کے اوزار 2019 کی. اگر آپ کو مکمل طور پر کوڈ سے بچنے کے لئے چاہتے ہیں تو، اپنی سائٹ کو بہترین کے ساتھ ڈیزائن کریں ویب سائٹ بلڈر ، اور اس بات کو یقینی بنائیں کہ آپ نے بہترین انتخاب کیا ہے ویب میزبانی ہمارے گائیڈ کے ساتھ سروس.
var نیند = کی ضرورت ہے ('نیند')؛
فنکشن کارکن () {
کنسول .log ("کارکن اپ")
نیند .میں (1000)
کنسول. لوگ ("کارکن نیچے")
}
SEATINTERVAL (کارکن، 2000)؛
جبکہ (1 == 1)
{
نیند .میں (250)
کنسول .log ("ہیلو سے ہیلو")
} & gt؛
ہمیں ایک اچھی طرح سے پسندیدہ پسندیدہ کی بنیاد پر ایک چھوٹی سی مثال کے ساتھ شروع کرنے دو سیٹنٹور فنکشن یہ ملیسیکنڈ میں ایک فنکشن حوالہ اور ایک عددی قدر لیتا ہے. اس کے بعد، جب بھی تاخیر ٹائمر ختم ہوجاتا ہے تو اس تقریب کو وقفے سے نکال دیا جاتا ہے.
این پی ایم نیند انسٹال
npm مثال 1 .js
کا استعمال کرتے ہوئے نیند () فنکشن ہمیں مقامی این پی ایم پروجیکٹ میں نیند ماڈیول لوڈ کرنے کی ضرورت ہے. یہ آپریٹنگ سسٹم کی نیند لائبریری میں ایک انٹرفیس کے طور پر کام کرتا ہے - حیرت نہیں کہ اگر آپ کے ورکسشن کا کمپائلر پیکج کی تعیناتی کے دوران نکالا جاتا ہے.
اس پروگرام کو چلاتے وقت، آپ اپنے آپ کو اس مرحلے کے ساتھ اعداد و شمار میں دکھایا گیا ہے اسی طرح کی پیداوار کے ساتھ سامنا کرنا پڑے گا. یہ واضح ہے کہ ہمارے کارکن نے کبھی بھی مدعو نہیں کیا ہے - کچھ سیٹٹورٹل فنکشن کے ساتھ غلط ہونا ضروری ہے.
جدید براؤزر ایک جاوا اسکرپٹ دھاگے کے ساتھ ہر ٹیب کو لیس کرتے ہیں. ہمارے لوپ پر ایک محتاط نظر سے پتہ چلتا ہے کہ یہ لامتناہی ہے. اس کا مطلب یہ ہے کہ یہ ہمیشہ کے لئے چل جائے گا، اور کبھی کنٹرول نہیں کرے گا. اس کو لے کر SEATINTERVAL () ایک پیغام کے ساتھ کام کرتا ہے، اس کے پے لوڈ کبھی نہیں چلتی ہے کیونکہ پیغام ہینڈلر چلانے سے روک دیا گیا ہے.
کان بار = () = & gt؛ کنسول .log ('بار')
Const Baz = () = & gt؛ کنسول .log ('بز')
const foo = () = & gt؛ {
کنسول .log ('foo')
Settimeout (بار، 0)
باز ()
}
foo ()
فلوییو کاپی 'بلاگ ، مسئلہ کی وضاحت کرنے والے کوڈ کا ایک انتہائی دلچسپ تھوڑا سا فراہم کرتا ہے. جب چلاتے ہیں، تو اس اعداد و شمار میں دکھایا گیا پیداوار میں دکھایا گیا پیداوار تک جب تک پیغام کی قطار تک بند ہوجائے گی foo () مرکزی دھاگے کے کنٹرول کو کنٹرول کرتا ہے.
یہ سمجھا جاتا ہے کہ بنیادی آپریٹنگ سسٹم منفی کثیر مقصود انجام دینے میں کامیاب ہے، ہمیں اس کی صلاحیتوں کو ایک وقفے API کے ذریعہ ویب ورکرز کے ذریعہ سپلائی کے سلسلے کی طرف سے استعمال کرتے ہیں جو وسیع پیمانے پر سپورٹ سے لطف اندوز ہوتے ہیں. اس مرحلے کے ساتھ اعداد و شمار سے پتہ چلتا ہے موجودہ لسٹنگ خصوصیت کے لئے.
کنسول .log ("کارکن کا کہنا ہے کہ ہیلو!")؛
کنسول .log ("کارکن اپ")؛
جبکہ (1 == 1)
{
کنسول .log ("X")؛
}
ویب ورکرز ایک فنکشن پے لوڈ کے ساتھ نہیں لات مار سکتے ہیں. اس کے بجائے، ایک نئی فائل کی ضرورت ہے جس میں اس کوڈ پر مشتمل ہے جس کا مقصد دھاگے میں چلانے کا ارادہ رکھتا ہے. ہمارے مثال کے طور پر، مثال کے طور پر 7thrad.js. اس مرحلے کے ساتھ دکھایا گیا مواد ہے.
COST کارکن = کی ضرورت ہے ('worker_thrads')؛
var myworker = نیا کارکن. ورکر ('./
مثال کے طور پر 7thrad.js ')؛
var myworker2 = نیا ورکر. ورکر ('./
EXAME7HREAD.JS ')؛
ہمارے کارکن وزیراعظم کے لئے تیار ہے. NODE.JS رن ٹائم فورسز کی خصوصیات ہمیں کارکن موضوعات ماڈیول شامل کرنے اور ایک رشتہ دار راستے میں منتقل کرنے کے لئے - براؤزر میں کوئی مسئلہ نہیں ہے. اس کے علاوہ، اس کے بارے میں تعجب نہ کرو لاپتہ آغاز () کال - مثال کے طور پر آن لائن آتا ہے جب ایک ویب کارکن سیٹ کرتا ہے.
پیغام کی ترسیل عام طور پر رن ٹائم اور باقی آپریٹنگ سسٹم کے درمیان کچھ قسم کی بات چیت کی ضرورت ہوتی ہے. افسوس سے، ہمارے لامتناہی لوپ اس عمل کو روکتا ہے - جس کا مطلب یہ ہے کہ پیغامات میں سے صرف ایک 'بڑا اسٹال' سے پہلے پاپتا ہے.
COST کارکن = کی ضرورت ہے ('worker_thrads')؛
var myworker = نیا کارکن. ورکر ('./
مثال کے طور پر 7thrad.js ')؛
var myworker2 = نیا ورکر. ورکر ('./
مثال کے طور پر 7thrad.js ')؛
جبکہ (1 == 1)
{
}
ایک اور تجربہ میں دو تعمیراتی انوائسز کے بعد خالی لوپ رکھنے میں شامل ہے. اس صورت میں، موضوعات کبھی کام شروع نہیں کریں گے - انضمام کا پیغام آپریٹنگ سسٹم کے ساتھ کبھی نہیں آتا.
جبکہ کارکنوں کو سخت لامتناہی loops چل رہا ہے جبکہ مندرجہ بالا مسائل کی نمائش ہوتی ہے، معمولات ایک دوسرے کے ساتھ بات چیت کرسکتے ہیں. یہ ایک پیغام گزرنے والے انٹرفیس کے ذریعہ کیا جاتا ہے - اس کی سہولت کے طور پر اس کے بارے میں سوچتے ہیں کہ آپ کو ایک پیغام کی اشیاء کو ایک مرسل سے دھاگے کی حدود میں ایک وصول کنندہ میں منتقل کرنے کی اجازت دیتا ہے.
موضوعات ای ایف ایف کو سنبھالنے کے قابل ہونے کے فوائد کے علاوہ (اور 'ٹرانزیشن' کے خطرے کو کم کرنے کے لئے، اور دوڑ کے حالات کے طور پر بھی جانا جاتا ہے)، مرکزی دھاگے کو گزرنے والے پیغام کو ڈوم کے ساتھ بات چیت کرنے کا ایک واحد طریقہ ہے، کی تخلیق کے ڈی ایف ایف کی ترتیبات کی وجہ سے موضوع محفوظ GUI اسٹیک.
node.js میں گزرنے والے پیغام کو محتاط ہے. کوڈ کو ویب پر منتقل کریں - ایک ایچ ٹی ایم ایل کا استعمال کرتے ہوئے شروع کریں جو بوجھ امتحان . آگاہ رہو کہ یہ کوڈ ڈوم اصل پابندیوں کی وجہ سے صرف مقامی ہسٹسٹ ویب سرور سے چل سکتا ہے.
var myworker = نیا کارکن ('./
ExplyMithread.js ')؛
var myworker2 = نیا کارکن ('./
ExplyMithread.js ')؛
myworker.onmessage = تقریب (ای)
{
کنسول .log (ای)؛
}
myworker2.onmessage = تقریب (ای)
{
کنسول .log (ای)؛
}
ہر کارکن ایک پراپرٹی کی جائیداد کو بے نقاب کرتا ہے جس میں ایک فنکشن کا حوالہ ملتا ہے جو کسی بھی پیغام کو دوسرے اختتام سے پاپتا ہے. آنے والے پیغامات صرف مرکزی دھاگے سے براؤزر کے کنسول کو آگے بڑھا رہے ہیں.
PostMessage ("کارکن کا کہنا ہے کہ ہیلو!")؛
PostMessage ("کارکن اپ")؛
جبکہ (1 == 1)
{
PostMessage ("X")؛
}
میل باکس میں پیغامات بھیجنے کے بعد پوسٹ پیغام کی تقریب کو مدعو کرکے پورا کیا جاتا ہے. ذہن میں رکھو کہ ایک کارکن بھی لاگو کرسکتا ہے OnMessage. واقعہ، جو کارکن مثال کے طور پر اعتراض کرتا ہے اس سے معلومات حاصل کرسکتا ہے.
اس وقت اس وقت، کوڈ چلانے کے لئے تیار ہے. ڈیپارٹمنٹ کنسول MPI انٹرفیس کے اعلی ای ایف ایف کی شبیہیں کی وجہ سے پیغامات کے ساتھ سیلاب نہیں ہے، مطلب یہ ہے کہ اعداد و شمار نظام کے ارد گرد سفر اور ایف ایف کے ارد گرد سفر کر سکتے ہیں.
مائیکروسافٹ کے ASYNC اور منتظر مطلوبہ الفاظ نے C # اور BisionBasic.net کی تاریخ میں ترمیم کی. اصول میں، ایک طریقہ نشان لگایا گیا ہے ASYNC باقی پروگرام کے ساتھ تعاون سے چلتا ہے. پھر انتظار کی تقریب کے ذریعے نتائج حاصل کر سکتے ہیں.
کان نیند = (ملیسیکنڈ) = & gt؛ {
نیا وعدہ واپس لو (حل = & gt؛
Settemout (حل، ملیسیکنڈ))
}
جب یہ مقامی افعال تک رسائی حاصل کرنے کے لئے آتا ہے تو براؤزر سخت حدود کے تحت ہیں، ہم اس سے پہلے ذکر نیند کی تقریب کو دوبارہ استعمال نہیں کرسکتے ہیں. اس کے علاوہ، اس میں suboptimal ہے کہ اس نے پورے node.js رن ٹائم کو روک دیا. اس قدم کے ساتھ اسپیپیٹ زیادہ مؤثر نقطہ نظر فراہم کرتا ہے.
یہ کوڈ ایک وعدہ آبجیکٹ واپس کرتا ہے - یہ ایک اور سہولت کلاس ہے جس میں جاوا اسکرپٹ میں شامل ہونے کی کوشش میں شامل ہے. آپ کو اس کے ذریعہ اپنے حل کے طریقہ کار کو مدعو کرنے کی ضرورت ہوگی Settemout. ، اس بات کو یقینی بنانا کہ کوڈ کو تھوڑا سا وقت لگتا ہے.
انتظار کی منتظر صرف ASYNC افعال کے اندر اندر اجازت دی جاتی ہے. اس کا مطلب یہ ہے کہ کارکن کو دوبارہ لکھنا کی ضرورت ہے - ایک ایسوسی ایشن بیئرر کی تقریب کو مدعو کرکے شروع کریں. یہ باقی کوڈ کی بات چیت کو ہینڈل کرتا ہے.
کان نیند = (ملیسیکنڈ) = & gt؛ {
نیا وعدہ واپس لو (حل = & gt؛
Settemout (حل، ملیسیکنڈ))
}
PostMessage ("کارکن کا کہنا ہے کہ ہیلو!")؛
PostMessage ("کارکن اپ")؛
کارکن ()
ASYNC فنکشن کارکن () {
جبکہ (1 == 1)
{
PostMessage ("X")؛
نیند کا انتظار کرو (1000)؛
}
}
Node.js کوڈ پر کام کرنے والے ڈویلپرز کو یہ نہیں بھولنا چاہئے کہ وہ عام طور پر - مکمل طور پر اصل ماڈیولز تخلیق کریں اگر انتہائی اعلی کارکردگی کی ضرورت ہو. یہ نہ صرف مختلف آپریٹنگ سسٹم APIs کا فائدہ اٹھا سکتے ہیں، لیکن یہ بھی پروگرامنگ زبانوں میں لکھا جا سکتا ہے جو مشین کوڈ پر مطابقت رکھتا ہے.
یہ مضمون اصل میں تخلیقی ویب ڈیزائن میگزین کے مسئلہ 291 میں شائع کیا گیا تھا ویب ڈیزائنر . مسئلہ 291 خریدیں .
مزید پڑھ:
(تصویری کریڈٹ: مارک ایون لیم) فوٹوشاپ میں کہانی بورڈنگ آپ کے خیال�..
(تصویری کریڈٹ: اسٹیو گولڈ) اس آرٹیکل میں میں آرچرج پر مشورہ اور بص..
(تصویری کریڈٹ: مستقبل / جوزف فورڈ) جمسٹیک سرور کی طرف سے ضروری کم س..
ایک فنتاسی مخلوق کی پینٹنگ بہت مزہ ہوسکتی ہے. میری رائے میں، آپ کسی بھی �..
Marmoset ٹول بگ ایک نیا مطلب نہیں ہے 3D آرٹ صنعت. یہ سال کے لئے باہر ہ�..
کبھی کبھی آپ کو آپ کے ساتھ چیزیں ہلانے کی ضرورت ہے پنسل ڈرائنگ ،..
بہت سے دلچسپ اثرات ہیں جو مصروفیت کو بڑھانے کے لئے صفحے میں شامل کیا جا �..
چاہے ہم اسے تسلیم کرنا چاہتے ہیں یا نہیں، پیغام رسانی بات چیت کے پلیٹ فا..