Atomics
Atomics জাভাস্ক্রিপ্টের একটি অবজেক্ট যা স্ট্যাটিক মেথড হিসেবে অ্যাটোমিক অপারেশন প্রদান করে। Math অবজেক্টের মেথডের মতোই Atomics-এর মেথড ও প্রোপার্টিগুলো স্ট্যাটিক। Atomics ব্যবহার করা হয় SharedArrayBuffer অবজেক্টের সাথে।
Atomic অপারেশনগুলো একটি Atomics মডিউল-এ ইনস্টল থাকে। অন্যান্য গ্লোবাল অবজেক্টের ভিন্ন, Atomics একটি কনস্ট্রাক্টর নয়। এটিকে new অপারেটর দিয়ে ব্যবহার করা যায় না বা ফাংশন হিসেবে ইনভোক করা যায় না।
অ্যাটোমিক অপারেশন
অ্যাটোমিক অপারেশনগুলো uninterruptible (বिघ্নবিহীন)। মেমোরি শেয়ার করা থাকলে একাধিক থ্রেড মেমোরিতে থাকা ডেটা পড়তে বা লিখতে পারে। যদি কোনো ডেটা পরিবর্তন হয়, তবে ডেটা লসের সম্ভাবনা থাকে। অ্যাটোমিক অপারেশন নিশ্চিত করে যে প্রিডিক্ট করা মান (ডেটা) সঠিকভাবে লেখা এবং পড়া হচ্ছে। অ্যাটোমিক অপারেশন চলমান অপারেশন শেষ না হওয়া পর্যন্ত শুরু হয় না, তাই বিদ্যমান ডেটা পরিবর্তন করার কোনো উপায় নেই।
এখন Atomics-এর একটি মেথড নিয়ে আলোচনা করি।
Atomics.add()
Atomics.add() একটি অ্যারের নির্দিষ্ট পজিশনে দেওয়া মান যোগ করে এবং সেই পজিশনের পুরানো মান রিটার্ন করে। যেহেতু কোনো বিঘ্ন অনুমোদিত নয়, তাই মডিফাইড মান রিটার্ন হওয়া পর্যন্ত অন্য কোনো রাইট ফাংশন কাজ করতে পারে না।
সিনট্যাক্স
Atomics.add(typedArray, index, value)
প্যারামিটার
typedArray
এটি একটি শেয়ারড ইন্টিজার টাইপড অ্যারে যা আমরা মডিফাই করব।
Index
অ্যারেতে যে ইন্ডেক্সে নতুন মান যোগ করব।
value
যে সংখ্যাটি যোগ করব।
রিটার্ন ভ্যালু
Atomics.add() দেওয়া পজিশনের পুরানো মান (typedArray[index]) রিটার্ন করে।
উদাহরণ
<html> <body> <script type="text/javascript"> var buffer = new SharedArrayBuffer(25); var arr = new Uint8Array(buffer); arr[0] = 6; document.write(Atomics.add(arr, 0, 2)); document.write("<br>"); document.write(Atomics.load(arr, 0)); </script> </body> </html>আউটপুট
6 8