جاوا اسکرپٹ میں ملٹی تھریڈنگ کے لیے ویب ورکرز کا استعمال کیسے کریں؟

Jawa Askrp My Ml Y T Ry Ng K Ly Wyb Wrkrz Ka Ast Mal Kys Kry



JavaScript میں، سائٹ کے مجموعی یوزر انٹرفیس کو بڑھانے کے لیے متعدد طریقے ہیں۔ دی 'ویب ورکر' ایک ایسا نقطہ نظر ہے جو مین تھریڈ کو بلاک کیے بغیر عمل کرنے کی اجازت دیتا ہے۔ یہ اس کے علیحدہ جاوا اسکرپٹ انجن کی مثال پر مشتمل ہے، اور اس وجہ سے مرکزی دھاگے کی فعالیت کو طلب نہیں کر سکتا۔

اس مضمون میں بات کی جائے گی کہ کس طرح استعمال کیا جائے۔ 'ویب ورکر' جاوا اسکرپٹ میں ملٹی تھریڈنگ کے لیے۔







ویب ورکرز کیا ہیں؟

'ویب ورکرز' ایک براؤزر API سے مطابقت رکھتا ہے جو JavaScript کو کاموں کو متوازی/ایک ہی وقت میں علیحدہ/سرشار تھریڈ پر چلانے کے قابل بناتا ہے۔



ویب ورکرز کی کیا ضرورت ہے؟

چونکہ جاوا اسکرپٹ سنگل تھریڈڈ ہے، اس لیے پیچیدہ جاوا اسکرپٹ کوڈز UI تھریڈ کو بلاک کردیتے ہیں، یعنی مرکزی ونڈو کو روکتے ہیں جو ریفریش کرنے، یوزر ان پٹ ایونٹس کو نافذ کرنے وغیرہ کے تمام کاموں کا مقابلہ کرتی ہے۔ ایسے حالات میں، صارف کا تجربہ متاثر ہوتا ہے۔ . اس مسئلے سے نمٹنے کے لیے، 'ویب ورکر' اثر میں آتا ہے اور UI تھریڈ کی بلاکنگ کو حل کرتا ہے۔



جاوا اسکرپٹ کے ساتھ ملٹی تھریڈنگ کے لیے ویب ورکرز کا استعمال کیسے کریں؟

بنانا a 'ویب ورکر' ، ورکر کنسٹرکٹر کا استعمال کریں۔ یہ اس طرح ہے کہ یہ اپنی دلیل کے طور پر ایک URL لیتا ہے، جو مطلوبہ فعالیت کو نافذ کرنے والے کارکن اسکرپٹ فائل کے راستے سے مطابقت رکھتا ہے۔ تاہم، HTML فائل میں ورکر کوڈ کو شامل کرنے کے لیے، استعمال کریں۔ 'بلاب' ورکر کوڈ لکھنے کے لیے۔





نحو (ایک ویب ورکر بنانا)

const ایکس = نئی ورکر ( 'worker.js' ) ;

نحو (کارکن کو پیغام بھیجنا)



const ایکس = نئی ورکر ( 'worker.js' ) ;

نحو (کارکن کی طرف سے پیغام وصول کرنا)

ایکس. پیغام = فنکشن ( تقریب ) {
تسلی. لاگ ( تقریب. ڈیٹا ) ;
} ;

مثال: جاوا اسکرپٹ میں نمبر کے فیکٹریل کی گنتی کے لیے 'ویب ورکر' کا استعمال
مندرجہ ذیل مثال کا استعمال کرتا ہے 'مزدور()' کنسٹرکٹر ایک ویب ورکر بنانے اور کسی نمبر کے فیکٹوریل کی گنتی کرنے کے لیے:

DOCTYPE html >
< html >
< سر >
< h2 طرز = 'text-align: center;' > ویب ورکرز کی مثال h2 >
سر >
< جسم >
< سکرپٹ >
const ایکس = نئی ورکر ( URL تخلیق آبجیکٹ یو آر ایل ( نئی بلاب ( [
`
// ورکر اسکرپٹ
const حقیقت = ( n ) => {
اگر ( n == 0 || n == 1 ) {
واپسی 1n ;
}
اور {
واپسی BigInt ( n ) * حقیقت ( BigInt ( n ) - 1n ) ;
}
} ;
خود پیغام = ( تقریب ) => {
const کے ساتھ = حقیقت ( تقریب. ڈیٹا ) ;
خود پوسٹ میسج ( کے ساتھ۔ toString ( ) ) ;
} ; `
] , { قسم : 'متن/جاوا اسکرپٹ' } ) ) ) ;
ایکس. پوسٹ میسج ( 15n ) ;
ایکس. پیغام = ( تقریب ) => {
const باہر = تقریب. ڈیٹا ;
تسلی. لاگ ( 'ویب ورکر کے ذریعے 15 کا فیکٹریل->' , باہر ) ;
} ;

جسم >

html >

اس کوڈ میں، درج ذیل اقدامات کا اطلاق کریں:

  • سب سے پہلے، بیان کردہ عنوان کی وضاحت کریں۔
  • اس کے بعد، ایک بنائیں 'ویب ورکر' بلاب آبجیکٹ کا یو آر ایل رکھنے والی آبجیکٹ جس میں ورکر کا کوڈ ہوتا ہے۔
  • کارکن کے لیے وقف کردہ کوڈ کو ایک گمنام فنکشن میں شامل کیا جاتا ہے جو ایک بار بار آنے والے فنکشن کے ذریعے نمبر کے فیکٹوریل کی گنتی کرتا ہے۔
  • نیز، کارکن مرکزی دھاگے کے ذریعے بھیجے گئے پیغامات کو سنتا ہے۔ 'self.onmessage' واقعہ، پاس شدہ نمبر کے فیکٹوریل کو بازیافت کرتا ہے، اور مرکزی دھاگے کے ذریعے نتیجہ دیتا ہے 'پوسٹ میسج()' طریقہ
  • مین تھریڈ میں، ورکر کی مثال بنائیں اور اسے نمبر کے ساتھ میسج بھیجیں۔ 15n ' یہاں، ' n ' سے مراد 'BigInt' قدر ہے۔
  • کارکن کے فیکٹوریل کی کمپیوٹنگ کرنے کے بعد، یہ نتیجہ/نتیجہ کو واپس مرکزی دھاگے پر بھیجتا ہے 'پوسٹ میسج()' طریقہ
  • آخر میں، مرکزی دھاگہ میں نتیجہ حاصل کرتا ہے/وصول کرتا ہے۔ 'پیغام' ایونٹ اور کنسول پر نمبر کا متعلقہ فیکٹریل لوٹاتا ہے۔

آؤٹ پٹ

ویب ورکرز کے فوائد

متوازی پروسیسنگ : ایک ہی کوڈ کو متوازی طریقے سے چلانے کی صورت میں۔

کوڈ پر عمل درآمد میں کوئی رکاوٹ نہیں: موجودہ صفحہ پر ریفریش وغیرہ سے قطع نظر کوڈ کا نفاذ کیا جاتا ہے۔

نقل و حرکت سے باخبر رہنا: تمام حرکت کا پتہ لگانے والے بیک گراؤنڈ ورکر میں ہوتے ہیں۔

فعال ملٹی تھریڈنگ: یہ جاوا اسکرپٹ میں ملٹی تھریڈنگ کو فعال کرتے ہیں۔

بہتر کارکردگی: الگ الگ تھریڈز میں گہرے/چیلنج والے کام کر کے کارکردگی کو بہتر بنائیں۔

مؤثر صارف کا تجربہ: یہ مرکزی دھاگے کو مسدود کرنے سے گریز کرتے ہیں، جس کے نتیجے میں صارف کا جوابی تجربہ ہوتا ہے۔

ویب ورکرز کی حدود

تاہم، ویب ورکرز کی بھی کچھ حدود ہیں۔ یہ مندرجہ ذیل بیان کیے گئے ہیں:

  • میموری کا زیادہ استعمال۔
  • ورکر تھریڈ میں DOM کو اپ ڈیٹ نہیں کیا جا سکتا یا ونڈو آبجیکٹ کو طلب نہیں کر سکتا۔

نتیجہ

'ویب ورکرز' ایک براؤزر API سے مطابقت رکھتا ہے جو JavaScript کو کاموں کو ایک ہی وقت میں علیحدہ/سرشار تھریڈ پر چلانے کے قابل بناتا ہے۔ یو آر ایل کو بطور دلیل لے کر ان کا استعمال کیا جا سکتا ہے، جو ورکر اسکرپٹ فائل کے راستے سے مطابقت رکھتا ہے۔ اس بلاگ نے جاوا اسکرپٹ میں ملٹی تھریڈنگ کے لیے 'ویب ورکرز' کے استعمال پر تبادلہ خیال کیا ہے۔