Introduction এবং অ্যারে পরিচালনা

Atomic Arrays - অ্যাটমিক্স (Atomics) - Web Development

236

Atomic Arrays হল JavaScript-এ Atomics API এবং SharedArrayBuffer এর সাথে ব্যবহৃত একটি বিশেষ কনসেপ্ট, যা মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে অ্যারে ডেটা পরিচালনায় atomic operations নিশ্চিত করে। এটি TypedArray এর উপর ভিত্তি করে কাজ করে, যা SharedArrayBuffer এর মাধ্যমে মেমোরি শেয়ার করতে সক্ষম।


Atomic Arrays: Introduction

Atomic Arrays মূলত SharedArrayBuffer এর উপর ভিত্তি করে তৈরি করা TypedArray। এগুলোতে Atomics API ব্যবহার করে থ্রেড-সেফ অপারেশন সম্পাদন করা হয়। মাল্টি-থ্রেডিংয়ের সময় ডেটা ম্যানিপুলেশনে Race Condition এবং Data Corruption প্রতিরোধ করার জন্য এগুলো ব্যবহৃত হয়।

কেন Atomic Arrays প্রয়োজন?

  • Thread-safe Data Management: একাধিক থ্রেড একসঙ্গে ডেটা পড়া এবং লেখা করতে পারে।
  • Synchronization: থ্রেডগুলোর মধ্যে ডেটা সিঙ্ক্রোনাইজ করে।
  • Performance Optimization: লক-মুক্ত (lock-free) প্রোগ্রামিংয়ের মাধ্যমে পারফরম্যান্স বৃদ্ধি করে।
  • Data Integrity: ডেটা সঠিকভাবে আপডেট এবং পরিচালনা নিশ্চিত করে।

Atomic Arrays এর বৈশিষ্ট্য

  • Thread-safety: একই সময়ে একাধিক থ্রেড ডেটার উপর কাজ করলেও ডেটার সঠিকতা বজায় থাকে।
  • Atomic Operations: ডেটা পড়া, লেখা, এবং আপডেট করার জন্য নির্দিষ্ট মেথড।
  • Shared Memory: SharedArrayBuffer ব্যবহার করে মেমোরি শেয়ার করা হয়।
  • TypedArray Integration: Int8Array, Int16Array, Int32Array এর সাথে কাজ করে।

Atomic Arrays: কিভাবে কাজ করে?

Atomic Arrays এর অপারেশনগুলো Atomics API এর মাধ্যমে সম্পন্ন হয়। এটি সরাসরি TypedArray এর নির্দিষ্ট ইনডেক্সে কাজ করে এবং থ্রেড-সেফ অপারেশন নিশ্চিত করে।

স্টেপস:

  1. SharedArrayBuffer তৈরি করুন।
  2. TypedArray এর সাথে SharedArrayBuffer লিঙ্ক করুন।
  3. Atomics API ব্যবহার করে ডেটা পড়া বা আপডেট করুন।

Atomic Arrays এর ফাংশনসমূহ

১. Atomics.load(typedArray, index)

একটি নির্দিষ্ট ইনডেক্স থেকে ডেটা পড়ে।

const buffer = new SharedArrayBuffer(16); // 16-byte মেমোরি
const intArray = new Int32Array(buffer);
intArray[0] = 42;

const value = Atomics.load(intArray, 0);
console.log(value); // আউটপুট: 42

২. Atomics.store(typedArray, index, value)

নির্দিষ্ট ইনডেক্সে একটি ভ্যালু সেট করে।

Atomics.store(intArray, 1, 100);
console.log(intArray[1]); // আউটপুট: 100

৩. Atomics.add(typedArray, index, value)

নির্দিষ্ট ইনডেক্সে একটি মান যোগ করে এবং পূর্ববর্তী মান রিটার্ন করে।

const previous = Atomics.add(intArray, 1, 10);
console.log(previous); // আউটপুট: 100
console.log(intArray[1]); // আউটপুট: 110

৪. Atomics.sub(typedArray, index, value)

নির্দিষ্ট ইনডেক্স থেকে একটি মান বিয়োগ করে এবং পূর্ববর্তী মান রিটার্ন করে।

Atomics.sub(intArray, 1, 10);
console.log(intArray[1]); // আউটপুট: 100

৫. Atomics.compareExchange(typedArray, index, expected, replacement)

ইনডেক্সে যদি মান expected এর সমান হয়, তবে সেটি replacement দিয়ে প্রতিস্থাপন করে।

const result = Atomics.compareExchange(intArray, 1, 100, 200);
console.log(result); // আউটপুট: 100
console.log(intArray[1]); // আউটপুট: 200

৬. Atomics.wait(typedArray, index, value, timeout)

নির্দিষ্ট ইনডেক্সে একটি মান পরিবর্তনের জন্য অপেক্ষা করে।

Atomics.wait(intArray, 0, 42, 1000); // ১ সেকেন্ড অপেক্ষা করবে যদি মান ৪২ না হয়

৭. Atomics.notify(typedArray, index, count)

একটি নির্দিষ্ট সংখ্যা পর্যন্ত থ্রেডকে জাগিয়ে তোলে।

Atomics.notify(intArray, 0, 1); // একটি থ্রেডকে জাগিয়ে তোলে

Atomic Arrays এর ব্যবহার

উদাহরণ ১: মাল্টি-থ্রেডিংয়ে Atomic Arrays

const buffer = new SharedArrayBuffer(1024);
const intArray = new Int32Array(buffer);

// Worker 1
Atomics.store(intArray, 0, 50);

// Worker 2
Atomics.add(intArray, 0, 10);

// Main Thread
console.log(Atomics.load(intArray, 0)); // আউটপুট: 60

উদাহরণ ২: ডেটা আপডেট এবং সিঙ্ক্রোনাইজেশন

const buffer = new SharedArrayBuffer(1024);
const intArray = new Int32Array(buffer);

function increment() {
    for (let i = 0; i < 1000; i++) {
        Atomics.add(intArray, 0, 1);
    }
}

increment();
console.log(Atomics.load(intArray, 0)); // আউটপুট: 1000

Atomic Arrays ব্যবহারের সুবিধা

  1. Thread-safe Operations: মাল্টি-থ্রেডিংয়ে ডেটা সঠিক রাখে।
  2. Performance: লক-মুক্ত (lock-free) অপারেশন নিশ্চিত করে।
  3. Data Consistency: একাধিক থ্রেড কাজ করলেও ডেটার সঠিকতা বজায় থাকে।
  4. Concurrency Management: থ্রেডগুলোর মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করে।

Atomic Arrays এর সীমাবদ্ধতা

  1. Complex API: নতুনদের জন্য এটি জটিল হতে পারে।
  2. Memory Limitation: SharedArrayBuffer এর সাইজ ফিক্সড থাকে।
  3. Browser Support: সব ব্রাউজারে সাপোর্ট নেই।
  4. Limited Data Types: শুধুমাত্র TypedArray এর সাথে কাজ করে।

Atomic Arrays মাল্টি-থ্রেডেড অ্যাপ্লিকেশনে ডেটা ম্যানেজমেন্ট এবং সিঙ্ক্রোনাইজেশনের জন্য একটি শক্তিশালী টুল। এটি Web Workers এর মাধ্যমে ডেটা শেয়ারিং এবং ডেটার উপর নির্ভরযোগ্য অপারেশন নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...