Mutex এবং এর প্রয়োগ

Semaphore এবং Mutex - ইন্টার প্রসেস কমিউনিকেশন (Inter Process Communication) - Computer Science

419

Mutex (Mutual Exclusion) হল একটি সমান্তরাল প্রোগ্রামিং কৌশল যা একাধিক থ্রেড বা প্রক্রিয়ার মধ্যে অভিগম্যতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে একাধিক থ্রেড একযোগে একটি নির্দিষ্ট রিসোর্সে (যেমন ডেটা বা অবজেক্ট) প্রবেশ করতে না পারে, যা ডেটার সঠিকতা এবং অখণ্ডতা রক্ষা করে।

Mutex এর কার্যকারিতা

  1. মিউটেক্স তৈরি করা: মিউটেক্স একটি অবজেক্ট হিসেবে তৈরি করা হয়, যা থ্রেডের মধ্যে অভিগম্যতা নিয়ন্ত্রণ করে।
  2. লক এবং আনলক: যখন একটি থ্রেড একটি রিসোর্স ব্যবহার করতে চায়, তখন এটি মিউটেক্সটি "লক" করে। রিসোর্সের কাজ শেষ হলে থ্রেডটি মিউটেক্সটি "আনলক" করে, যাতে অন্য থ্রেডগুলি রিসোর্সটি ব্যবহার করতে পারে।
  3. ব্লকিং: যদি একটি থ্রেড মিউটেক্স লক করতে না পারে কারণ অন্য থ্রেড এটি ধরে রেখেছে, তাহলে সেটি অপেক্ষা করে (blocking) যতক্ষণ না মিউটেক্সটি আনলক হয়।

Mutex এর প্রয়োগ

মিউটেক্স সাধারণত নিম্নলিখিত ক্ষেত্রে ব্যবহৃত হয়:

১. শেয়ার্ড ডেটা অ্যাক্সেস:

  • একাধিক থ্রেড যখন একযোগে একটি শেয়ার্ড ভেরিয়েবল বা ডেটা স্ট্রাকচার অ্যাক্সেস করে, তখন মিউটেক্স ব্যবহৃত হয়। এটি নিশ্চিত করে যে শুধুমাত্র একটি থ্রেড একই সময়ে ডেটাতে পরিবর্তন করতে পারে।
#include <pthread.h>
#include <stdio.h>
int shared_data = 0; // শেয়ার্ড ডেটা
pthread_mutex_t mutex; // মিউটেক্স
void* increment(void* arg) {
   for (int i = 0; i < 1000; i++) {
       pthread_mutex_lock(&mutex); // মিউটেক্স লক করা
       shared_data++; // শেয়ার্ড ডেটা পরিবর্তন করা
       pthread_mutex_unlock(&mutex); // মিউটেক্স আনলক করা
   }
   return NULL;
}
int main() {
   pthread_t t1, t2;
   pthread_mutex_init(&mutex, NULL); // মিউটেক্স শুরু করা
   pthread_create(&t1, NULL, increment, NULL);
   pthread_create(&t2, NULL, increment, NULL);
   pthread_join(t1, NULL);
   pthread_join(t2, NULL);
   printf("Final value: %d\n", shared_data); // শেয়ার্ড ডেটার ফাইনাল মান
   pthread_mutex_destroy(&mutex); // মিউটেক্স ধ্বংস করা
   return 0;
}

২. ক্রিটিক্যাল সেকশন:

  • যখন একটি থ্রেড একটি নির্দিষ্ট কোড ব্লক (ক্রিটিক্যাল সেকশন) সম্পাদন করছে, তখন অন্য থ্রেডকে সেই কোড ব্লকে প্রবেশ করতে দেওয়া উচিত নয়। মিউটেক্স ব্যবহার করে ক্রিটিক্যাল সেকশন সুরক্ষিত করা হয়।

৩. নেটওয়ার্কিং ও IO অপারেশন:

  • নেটওয়ার্কিং বা ইনপুট/আউটপুট অপারেশনগুলো সাধারণত একাধিক থ্রেড দ্বারা একযোগে ব্যবহৃত হতে পারে। এই সময় মিউটেক্স ব্যবহার করে নিশ্চিত করা হয় যে একই সময়ে একাধিক থ্রেড একটি সংস্থান অ্যাক্সেস করছে না।

৪. থ্রেড সিঙ্ক্রোনাইজেশন:

  • বিভিন্ন থ্রেডের মধ্যে সিঙ্ক্রোনাইজেশন তৈরি করতে মিউটেক্স ব্যবহার করা হয়, যাতে একটি থ্রেড অন্য থ্রেডের কাজ শেষ হওয়ার অপেক্ষা করতে পারে।

উপসংহার

Mutex (Mutual Exclusion) হল একটি শক্তিশালী টুল যা থ্রেড এবং প্রক্রিয়ার মধ্যে নিরাপদভাবে শেয়ার্ড রিসোর্স ব্যবহার নিশ্চিত করে। এটি সিস্টেমের পারফরম্যান্স এবং ডেটার নিরাপত্তা বজায় রাখতে সাহায্য করে। সঠিকভাবে মিউটেক্স ব্যবহার করে, ডেভেলপাররা সমান্তরাল প্রোগ্রামিংয়ে সঠিকতা এবং কার্যকারিতা নিশ্চিত করতে সক্ষম হন।

Promotion

Are you sure to start over?

Loading...