http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx
একটি সেমফোর তৈরি করতে, আমাকে একটি প্রাথমিক গণনা এবং সর্বাধিক গণনা সরবরাহ করতে হবে। এমএসডিএন সূচিত করে যে একটি প্রাথমিক গণনা হ'ল -
একইসাথে মঞ্জুর করা যেতে পারে সেমফোর জন্য অনুরোধের প্রাথমিক সংখ্যা।
যদিও এটি বলে যে সর্বাধিক গণনা
একযোগে মঞ্জুর করা যায় সেমফোরের জন্য সর্বাধিক সংখ্যার অনুরোধ।
আমি বুঝতে পারি যে সর্বাধিক গণনা হ'ল সর্বাধিক সংখ্যক থ্রেড যা একই সাথে কোনও সংস্থান অ্যাক্সেস করতে পারে। তবে, প্রাথমিক গণনার ব্যবহার কী?
যদি আমি প্রাথমিক গণনা 0 এবং সর্বাধিক 2 গণনা সহ একটি সেমফোর তৈরি করি তবে আমার থ্রেডপুলের কোনও থ্রেডই সংস্থানটিতে অ্যাক্সেস করতে সক্ষম নয়। যদি আমি প্রাথমিক গণনাটিকে 1 হিসাবে এবং সর্বোচ্চ গণনা 2 হিসাবে সেট করে তবে কেবল থ্রেড পুল থ্রেডই সংস্থানটিতে অ্যাক্সেস করতে পারে। আমি তখনই প্রাথমিক গণনা এবং সর্বাধিক গণনা 2, 2 থ্রেড উভয়ই সেট করে যখন একই সাথে সংস্থানটি অ্যাক্সেস করতে সক্ষম হয়। সুতরাং, আমি প্রাথমিক গণনার তাত্পর্য সম্পর্কে সত্যিই বিভ্রান্ত?
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(0, 2); //all threadpool threads wait
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 2);//only one thread has access to the resource at a time
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2, 2);//two threadpool threads can access the resource concurrently