Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

सी # में सेमाफोर

सेमाफोर वर्ग आपको उन थ्रेड्स की संख्या पर एक सीमा निर्धारित करने देता है जिनकी एक महत्वपूर्ण खंड तक पहुंच है। संसाधनों के पूल तक पहुंच को नियंत्रित करने के लिए कक्षा का उपयोग किया जाता है। System.Threading.Semaphore सेमाफोर के लिए नाम स्थान है क्योंकि इसमें सेमाफोर को लागू करने के लिए आवश्यक सभी विधियां और गुण हैं।

सी # में सेमाफोर का उपयोग करने के लिए, आपको केवल सेमाफोर ऑब्जेक्ट के इंस्टेंस को तुरंत चालू करने की आवश्यकता है। इसके कम से कम दो तर्क हैं -

संदर्भ

-

एमएसडीएन

<टेबल> <थहेड> क्रमांक Constructor &Description 1 सेमाफोर(Int32,Int32)
प्रविष्टियों की प्रारंभिक संख्या और समवर्ती प्रविष्टियों की अधिकतम संख्या निर्दिष्ट करते हुए, सेमाफोर वर्ग का एक नया उदाहरण प्रारंभ करता है।
2 सेमाफोर(Int32,Int32,String) -
सेमाफोर वर्ग का एक नया उदाहरण आरंभ करता है, प्रविष्टियों की प्रारंभिक संख्या और समवर्ती प्रविष्टियों की अधिकतम संख्या निर्दिष्ट करता है, और वैकल्पिक रूप से सिस्टम सेमाफोर ऑब्जेक्ट का नाम निर्दिष्ट करता है।
3 सेमाफोर (इंट 32, इंट 32, स्ट्रिंग, बूलियन)
सेमाफोर वर्ग का एक नया उदाहरण आरंभ करता है, प्रविष्टियों की प्रारंभिक संख्या और समवर्ती प्रविष्टियों की अधिकतम संख्या निर्दिष्ट करता है, वैकल्पिक रूप से सिस्टम सेमाफोर ऑब्जेक्ट का नाम निर्दिष्ट करता है, और एक वैरिएबल निर्दिष्ट करता है जो एक मूल्य प्राप्त करता है जो दर्शाता है कि एक नया सिस्टम सेमाफोर बनाया गया था या नहीं।

आइए अब एक उदाहरण देखें:

यहां, हमने निम्नलिखित सेमाफोर कंस्ट्रक्टर का उपयोग किया है जो सेमाफोर क्लास के एक नए इंस्टेंस को इनिशियलाइज़ करता है, समवर्ती प्रविष्टियों की अधिकतम संख्या निर्दिष्ट करता है और वैकल्पिक रूप से कुछ प्रविष्टियों को आरक्षित करता है।

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...

  1. जावास्क्रिप्ट संख्या समारोह

    जावास्क्रिप्ट नंबर () फ़ंक्शन किसी ऑब्जेक्ट मान को उसके संबंधित संख्यात्मक मान के तर्क के रूप में परिवर्तित करता है। जावास्क्रिप्ट नंबर () फ़ंक्शन के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta

  1. जावास्क्रिप्ट में संख्या पैटर्न

    हमें एक जावास्क्रिप्ट और एचटीएमएल प्रोग्राम लिखना आवश्यक है जो उपयोगकर्ता को टेक्स्ट इनपुट और बटन प्रदान करता है। जब उपयोगकर्ता इनपुट में कोई मान दर्ज करता है, जैसे 5, और बटन पर क्लिक करता है, तो हमें स्क्रीन पर निम्न पैटर्न प्रिंट करना चाहिए। (एन =5 के लिए) 01 01 02 01 02 03 01 02 03 04 01 02 03 0

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की