পসিক্স মুটেক্সকে পুনরাবৃত্ত হতে দেয়। তার মানে একই থ্রেড একই মুটেক্সকে দু'বার লক করতে পারে এবং অচলাবস্থায় থাকবে না। অবশ্যই এটি দুটি বার আনলক করা দরকার, অন্যথায় অন্য কোনও থ্রেড মিটেক্সটি অর্জন করতে পারে না। নেই সব ব্যবস্থা pthreads সমর্থনকারী এছাড়াও রিকার্সিভ mutexes সমর্থন করি, কিন্তু যদি তারা হতে চান POSIX সামঞ্জস্য, তারা আছে ।
অন্যান্য এপিআই (আরও উচ্চ স্তরের এপিআই) সাধারণত মিউটেক্সগুলি অফার করে, প্রায়শই তাকে লকস বলা হয়। কিছু সিস্টেম / ভাষা (উদাহরণস্বরূপ কোকো অবজেক্টিভ-সি) পুনরাবৃত্ত এবং অ রিকারসিভ মিউটেক্স উভয়ই সরবরাহ করে। কিছু কিছু ভাষা কেবল একটি বা অন্যটি অফার করে। যেমন জাভা মিটেক্সে সর্বদা পুনরাবৃত্ত হয় (একই থ্রেড একই বস্তুর উপর দু'বার "সংহত" হতে পারে)। তারা যে অন্য থ্রেড কার্যকারিতাটি দেয় তার উপর নির্ভর করে পুনরাবৃত্ত ম্যুটেক্স না রাখার কোনও সমস্যা হতে পারে না, কারণ এগুলি সহজেই নিজের লেখা যেতে পারে (আমি ইতিমধ্যে আরও সাধারণ মুউটেক্স / শর্ত ক্রিয়াকলাপের ভিত্তিতে পুনঃসংশ্লিষ্ট মুউটেক্সগুলি প্রয়োগ করেছি)।
যা আমি সত্যিই বুঝতে পারি না: নন-রিকার্সিভ মিটেক্সগুলি কীসের জন্য ভাল? যদি একই মুটেক্সটিকে দু'বার লক করে রাখি তবে আমি কেন একটি থ্রেড অচলাবস্থা রাখতে চাই? এমনকি উচ্চ স্তরের ভাষাও এড়াতে পারে (উদাহরণস্বরূপ এটি পরীক্ষা করে যদি এটি পরীক্ষা করে এবং এটি যদি ব্যতিক্রম ছুঁড়ে তবে এটি সাধারণত) না করে। পরিবর্তে তারা থ্রেডটি অচল করে দেবে।
এটি কি কেবলমাত্র ক্ষেত্রে, যেখানে আমি ঘটনাক্রমে দু'বার লক করে ফেলেছি এবং কেবল একবার এটি আনলক করেছি এবং পুনরাবৃত্তিকারী মুটেক্সের ক্ষেত্রে সমস্যাটি খুঁজে পাওয়া আরও কঠিন er তাই এর পরিবর্তে আমার তত্ক্ষণাত ত্রুটিযুক্ত লকটি উপস্থিত হওয়ার জন্য তা অচল করে দেওয়া আছে? তবে আনলক করার সময় এবং কোনও পরিস্থিতিতে যখন আমি নিশ্চিত যে আমি শেষ লকটি প্রকাশ করেছি এবং কাউন্টারটি শূন্য নয়, তখন আমি কোনও ব্যতিক্রম ছুঁড়ে দিতে পারি বা সমস্যাটি লগ করতে পারি, এমন কি আমি লক কাউন্টারটি ফিরে আসার সাথে কি করতে পারি না? বা আমি দেখতে ব্যর্থ নন পুনরাবৃত্ত mutexes এর অন্য কোন, দরকারী ব্যবহারের কেস আছে? বা এটি সম্ভবত কেবল পারফরম্যান্স হিসাবে, যেমন একটি পুনরাবৃত্তিকারী মুটেক্স একটি পুনরাবৃত্তির চেয়ে কিছুটা দ্রুত হতে পারে? তবে, আমি এটি পরীক্ষা করেছি এবং পার্থক্যটি আসলে এত বড় নয় not