गंभीर वर्ग काम करेंगे (वे लाइटर-वेट हैं जो म्यूटेक्स हैं।) प्रारंभिक क्रिटिकलसेक्शन, एंटरक्रिटिकलसेक्शन, छोड़क्रिटिकलसेक्शन, और डिलीटक्रिटिकलसेक्शन एमएसडीएन पर देखने के लिए कार्य हैं।
void func()
{
// cs previously initialized via InitializeCriticalSection
EnterCriticalSection(&cs);
operation1();
operation2();
LeaveCriticalSection(&cs);
operation3();}
}
संपादित करें: महत्वपूर्ण वर्गों mutexes की तुलना में तेजी के बाद से महत्वपूर्ण वर्गों मुख्य रूप से उपयोगकर्ता मोड पुरातन हैं - एक uncontended अधिग्रहण (आमतौर पर सामान्य मामले) वहाँ कर्नेल में कोई सिस्टम कॉल है के मामले में, और प्राप्त करने लगते हैं दर्जनों चक्रों के क्रम में। एक कर्नेल स्विच अधिक महंगा है (सैकड़ों चक्रों के क्रम में)। कर्नेल में कॉल करने का एकमात्र महत्वपूर्ण खंड ब्लॉक करने के लिए है, जिसमें कर्नेल आदिम, (या तो म्यूटेक्स या ईवेंट) पर प्रतीक्षा करना शामिल है। एक म्यूटेक्स प्राप्त करने में हमेशा कर्नेल में कॉल शामिल होता है, और इस प्रकार परिमाण धीमा होने का आदेश होता है। हालांकि, महत्वपूर्ण अनुभागों का उपयोग केवल एक प्रक्रिया में संसाधनों को सिंक्रनाइज़ करने के लिए किया जा सकता है। कई प्रक्रियाओं में सिंक्रनाइज़ करने के लिए, एक म्यूटेक्स की आवश्यकता होती है।
अब तक सही है, लेकिन जहां तक मुझे पता है कि क्रिटिकलसेक्शन आंतरिक रूप से म्यूटेक्स का उपयोग करते हैं, इसलिए प्रदर्शन लाभ नहीं होता है। –
और फिर अपवाद सुरक्षा के लिए आप सीएस को कक्षा में लपेट सकते हैं; आरएआईआई देखें। – Reunanen
(चूंकि प्रश्न सी ++ के बारे में है।) – Reunanen