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

C# में थ्रेड सिंक्रनाइज़ेशन


सिंक्रनाइज़ेशन का उपयोग करके मल्टीथ्रेडेड एप्लिकेशन में संसाधनों तक पहुंच को सिंक्रनाइज़ करें।

थ्रेड्स को सिंक्रनाइज़ करने के लिए Mutex

प्रोसेस में थ्रेड्स को सिंक्रनाइज़ करने के लिए म्यूटेक्स का उपयोग किया जा सकता है। इसका उपयोग एक समय में एक से अधिक थ्रेड द्वारा कोड के ब्लॉक के एक साथ निष्पादन को रोकने के लिए करें।

C# lock स्टेटमेंट का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि कोड का एक ब्लॉक अन्य थ्रेड्स द्वारा बाधा के बिना चलता है। कोड ब्लॉक की अवधि के लिए दिए गए ऑब्जेक्ट के लिए एक म्यूचुअल-एक्सक्लूजन लॉक प्राप्त किया जाता है।

एक lock स्टेटमेंट एक ऑब्जेक्ट को तर्क के रूप में प्राप्त करता है। "lock" को दिया गया पैरामीटर एक रेफरेंस प्रकार पर आधारित ऑब्जेक्ट होना चाहिए:

public class Demo {
    private System.Object myLock = new System.Object();
    public void Process() {
        lock (myLock) {
        }
    }
}

C# में Mutex क्लास एक सिंक्रनाइज़ेशन प्रिमिटिव है जिसका उपयोग इंटरप्रोसेस सिंक्रनाइज़ेशन के लिए भी किया जा सकता है।

आइए देखें कि एक नया Mutex कैसे बनाएं:

private static Mutex m = new Mutex();

  1. - C# में सिंपल थ्रेड बनाना

    C# में System.Threading.Thread क्लास का उपयोग करके एक नया थ्रेड बनाया जा सकता है। थ्रेड एक निष्पादन पथ होता है जो मुख्य प्रोग्राम के समानांतर चलता है। थ्रेड बनाने के चरण थ्रेड में चलने वाला मेथड परिभाषित करें। ThreadStart डेलीगेट बनाएं जो उस मेथड को इंगित करता है। Thread ऑब्जेक्ट इंस्ट

  1. - C# में थ्रेड को समाप्त करना (Kill/Stop)

    महत्वपूर्ण: .NET में Thread.Abort() मेथड अप्रचलित (obsolete) है और इसका उपयोग नहीं करना चाहिए क्योंकि यह अप्रत्याशित व्यवहार और संसाधन लीक का कारण बन सकता है। सही दृष्टिकोण: कैंसिलेशन टोकन/फ्लैग पैटर्न थ्रेड को सुरक्षित रूप से रोकने के लिए एक शेयर्ड फ्लैग (या CancellationToken) का उपयोग करें जिसे थ

  1. - जावा में ऑब्जेक्ट लेवल लॉक और क्लास लेवल लॉक में अंतर?

    ऑब्जेक्ट लेवल लॉक और क्लास लेवल लॉक दोनों का उपयोग मल्टी-थ्रेडेड एप्लिकेशन में सिंक्रोनाइज़ेशन मैकेनिज्म प्राप्त करने के लिए किया जाता है। ऑब्जेक्ट लेवल लॉक जावा में प्रत्येक ऑब्जेक्ट का एक यूनिक लॉक होता है। यदि कोई थ्रेड किसी दिए गए ऑब्जेक्ट पर सिंक्रोनाइज़्ड मेथड निष्पादित करना चाहता है, तो पहल