সেমাফোর ক্লাস আপনাকে থ্রেডের সংখ্যার একটি সীমা নির্ধারণ করতে দেয় যা একটি গুরুত্বপূর্ণ বিভাগে অ্যাক্সেস করতে পারে। ক্লাসটি সম্পদের পুল অ্যাক্সেস নিয়ন্ত্রণ করতে ব্যবহৃত হয়। System.Threading.Semaphore হল সেমাফোরের নামস্থান কারণ এতে সেমাফোর বাস্তবায়নের জন্য প্রয়োজনীয় সমস্ত পদ্ধতি এবং বৈশিষ্ট্য রয়েছে৷
C# এ একটি সেমাফোর ব্যবহার করার জন্য, আপনাকে কেবল একটি সেমাফোর অবজেক্টের একটি উদাহরণ তৈরি করতে হবে। এতে ন্যূনতম দুটি আর্গুমেন্ট আছে −
রেফারেন্স
−
MSDN
Sr.No. | কনস্ট্রাক্টর এবং বর্ণনা |
---|---|
1 | সেমাফোর(Int32,Int32) সেমাফোর ক্লাসের একটি নতুন দৃষ্টান্ত শুরু করে, এন্ট্রির প্রারম্ভিক সংখ্যা এবং সমবর্তী এন্ট্রির সর্বাধিক সংখ্যা উল্লেখ করে। |
2 | সেমাফোর(Int32,Int32,String) − সেমাফোর ক্লাসের একটি নতুন দৃষ্টান্ত শুরু করে, এন্ট্রির প্রাথমিক সংখ্যা এবং সমসাময়িক এন্ট্রির সর্বাধিক সংখ্যা উল্লেখ করে এবং ঐচ্ছিকভাবে একটি সিস্টেম সেমাফোর অবজেক্টের নাম উল্লেখ করে। |
3 | সেমাফোর(Int32,Int32,String,Bolean) Semaphore ক্লাসের একটি নতুন দৃষ্টান্ত শুরু করে, এন্ট্রির প্রাথমিক সংখ্যা এবং সমসাময়িক এন্ট্রির সর্বাধিক সংখ্যা উল্লেখ করে, ঐচ্ছিকভাবে একটি সিস্টেম সেমাফোর অবজেক্টের নাম উল্লেখ করে এবং একটি পরিবর্তনশীল নির্দিষ্ট করে যা একটি নতুন সিস্টেম সেমাফোর তৈরি করা হয়েছে কিনা তা নির্দেশ করে একটি মান পায়। |
আসুন এখন একটি উদাহরণ দেখি:
এখানে, আমরা নিম্নলিখিত সেমাফোর কনস্ট্রাক্টর ব্যবহার করেছি যা সেমাফোর ক্লাসের একটি নতুন উদাহরণ শুরু করে, সর্বাধিক সংখ্যক সমবর্তী এন্ট্রি নির্দিষ্ট করে এবং কিছু এন্ট্রিকে ঐচ্ছিকভাবে সংরক্ষণ করে।
static Semaphore semaphore = new Semaphore(2, 2);
উদাহরণ
using System; using System.Threading; namespace Program { class Demo { static Thread[] t = new Thread[5]; static Semaphore semaphore = new Semaphore(2, 2); static void DoSomething() { Console.WriteLine("{0} = waiting", Thread.CurrentThread.Name); semaphore.WaitOne(); Console.WriteLine("{0} begins!", Thread.CurrentThread.Name); Thread.Sleep(1000); Console.WriteLine("{0} releasing...", Thread.CurrentThread.Name); semaphore.Release(); } static void Main(string[] args) { for (int j = 0; j < 5; j++) { t[j] = new Thread(DoSomething); t[j].Name = "thread number " + j; t[j].Start(); } Console.Read(); } } }
আউটপুট
নিম্নলিখিত আউটপুট
thread number 2 = waiting thread number 0 = waiting thread number 3 = waiting thread number 1 = waiting thread number 4 = waiting thread number 2 begins! thread number 1 begins! thread number 2 releasing... thread number 1 releasing... thread number 4 begins! thread number 3 begins! thread number 4 releasing... thread number 0 begins! thread number 3 releasing... thread number 0 releasing...