সেমাফোর বনাম মিউটেক্স
সেমাফোর হল একটি ডেটা স্ট্রাকচার যা সমান্তরাল প্রোগ্রামিং পরিবেশে একাধিক প্রক্রিয়া একই সময়ে একটি সাধারণ সংস্থান বা একটি গুরুত্বপূর্ণ বিভাগে অ্যাক্সেস না করে তা নিশ্চিত করতে ব্যবহৃত হয়। মৃত লক এবং রেসের অবস্থা এড়াতে Semaphores ব্যবহার করা হয়। মিউটেক্স (মিউচুয়াল এক্সক্লুশন অবজেক্ট) একই সময়ে একাধিক সমসাময়িক প্রক্রিয়ার মাধ্যমে একটি সাধারণ সম্পদে অ্যাক্সেস এড়াতেও ব্যবহৃত হয়।
সেমাফোর কি?
সেমাফোর হল একটি ডেটা স্ট্রাকচার যা গুরুত্বপূর্ণ বিভাগে পারস্পরিক বর্জন প্রদান করতে ব্যবহৃত হয়। সেমাফোর প্রধানত অপেক্ষা (ঐতিহাসিকভাবে P নামে পরিচিত) এবং সংকেত (ঐতিহাসিকভাবে V নামে পরিচিত) নামে দুটি অপারেশনকে সমর্থন করে।অপেক্ষা অপারেশন একটি প্রক্রিয়াকে ব্লক করে যতক্ষণ না সেমাফোর খোলা হয় এবং সিগন্যাল অপারেশন অন্য একটি প্রক্রিয়া (থ্রেড) প্রবেশ করতে দেয়। প্রতিটি সেমাফোর অপেক্ষার প্রক্রিয়ার একটি সারির সাথে যুক্ত। যখন অপেক্ষা অপারেশন একটি থ্রেড দ্বারা কল করা হয়, সেমাফোর খোলা থাকলে, থ্রেডটি চালিয়ে যেতে পারে। একটি থ্রেড দ্বারা অপেক্ষা অপারেশন কল করা হলে সেমাফোর বন্ধ হয়ে গেলে, থ্রেডটি ব্লক করা হয় এবং এটিকে সারিতে অপেক্ষা করতে হয়। সিগন্যাল অপারেশনটি একটি সেমাফোর খোলে এবং যদি সারিতে ইতিমধ্যেই অপেক্ষারত একটি থ্রেড থাকে, তবে সেই প্রক্রিয়াটিকে এগিয়ে যাওয়ার অনুমতি দেওয়া হয় এবং যদি সারিতে অপেক্ষারত কোনও থ্রেড না থাকে তবে পরবর্তী থ্রেডগুলির জন্য সংকেতটি মনে রাখা হয়। মিউটেক্স সেমাফোর এবং কাউন্টিং সেমাফোর নামে দুটি ধরণের সেমাফোর রয়েছে। Mutex semaphores একটি সম্পদে একটি একক অ্যাক্সেসের অনুমতি দেয় এবং গণনা সেমাফোর একাধিক থ্রেডকে একটি সংস্থান অ্যাক্সেস করতে দেয় (যার বেশ কয়েকটি ইউনিট উপলব্ধ রয়েছে)।
মিউটেক্স কি?
যখন একটি কম্পিউটার অ্যাপ্লিকেশন শুরু করা হয়, এটি একটি মিউটেক্স তৈরি করবে এবং এটি একটি সংস্থানের সাথে সংযুক্ত করবে।যখন একটি থ্রেড দ্বারা সম্পদ ব্যবহার করা হয়, এটি লক করা হয় এবং অন্যান্য থ্রেড এটি ব্যবহার করতে পারে না। যদি অন্য থ্রেড একই সম্পদ ব্যবহার করতে চায়, এটি একটি অনুরোধ করতে হবে. তারপর সেই থ্রেডটিকে একটি সারিতে রাখা হবে যতক্ষণ না প্রথম থ্রেডটি রিসোর্সটির সাথে শেষ হয়। রিসোর্সের সাথে প্রথম থ্রেডটি শেষ হলে, লকটি সরানো হবে এবং সারিতে থাকা থ্রেডটি রিসোর্সে অ্যাক্সেস পেতে পারে। যদি সারিতে একাধিক থ্রেড অপেক্ষা করে থাকে, তবে তাদের ঘূর্ণায়মান ভিত্তিতে অ্যাক্সেস দেওয়া হয়। ব্যবহারিকভাবে, যখন মিউটেক্স বিভিন্ন থ্রেডের মধ্যে একটি রিসোর্সের অ্যাক্সেসকে বিকল্প করে, তখন এটি দৃশ্যমান হবে কারণ একাধিক থ্রেড একই সময়ে একটি রিসোর্স ব্যবহার করছে। কিন্তু অভ্যন্তরীণভাবে শুধুমাত্র একটি একক থ্রেড একটি নির্দিষ্ট সময়ে সম্পদ অ্যাক্সেস করছে।
সেমাফোর এবং মিউটেক্সের মধ্যে পার্থক্য কী?
যদিও, সেমাফোর এবং মিউটেক্স উভয় বস্তুই সমান্তরাল প্রোগ্রামিং পরিবেশে পারস্পরিক বর্জন অর্জনের জন্য ব্যবহৃত হয়, তাদের কিছু পার্থক্য রয়েছে।একটি মিউটেক্স অবজেক্ট শুধুমাত্র একটি একক থ্রেডকে একটি সংস্থান বা একটি সমালোচনামূলক বিভাগ ব্যবহার করার অনুমতি দেয়, যেখানে সেমাফোরগুলি একটি সংস্থানে একযোগে সীমিত সংখ্যক অ্যাক্সেসের অনুমতি দেয় (সর্বোচ্চ অনুমোদিত সংখ্যার অধীনে)। মিউটেক্স অবজেক্টের সাথে, অন্যান্য থ্রেড যারা রিসোর্স অ্যাক্সেস করতে চায় তাদের একটি সারিতে অপেক্ষা করতে হবে, যতক্ষণ না রিসোর্স ব্যবহার করে বর্তমান থ্রেড শেষ হয়।