std :: mutex को महत्वपूर्ण वर्गों के साथ कार्यान्वित किया गया है, यही कारण है कि यह ओएस म्यूटेक्स (विंडोज़ पर) से बहुत तेज है। हालांकि यह Windows CRITICAL_SECTION जितना तेज़ नहीं है।क्यों std :: mutex धीमा है CRITICAL_SECTION
समय बस एक ही धागे में एक तंग पाश:
423.76ns ATL CMutex
41.74ns std::mutex
16.61ns win32 Critical Section
मेरा प्रश्न म्युटेक्स कर और क्या एसटीडी है ::? मैंने स्रोत को देखा लेकिन इसका पालन नहीं कर सका। हालांकि क्रिट सेक्शन में आने से पहले अतिरिक्त कदम थे। मेरे प्रश्न हैं: क्या ये अतिरिक्त कदम उपयोगी हैं? यही है, के लिए अतिरिक्त कदम क्या हैं; CRITICAL_SECTION का उपयोग करके मुझे क्या याद आएगा?
इसके अलावा यदि उन्होंने म्यूटेक्स के साथ लागू नहीं किया है तो उन्होंने इसे म्यूटेक्स क्यों कहा?
आप क्या समय दे रहे हैं? एक म्यूटेक्स बनाना, इसे लॉक करना, इसे अनलॉक करना, ...? Win32 mutex से भिन्नता तक: Win32 mutex एक क्रॉस-प्रोसेस म्यूटेक्स है। मानक केवल क्रॉस-थ्रेड म्यूटेक्स के लिए कॉल करता है, जो हल्का वजन निर्माण (और एक महत्वपूर्ण खंड के साथ विंडोज़ लागू) हो सकता है। –
सीएमयूटेक्स को म्यूटेक्स के साथ कार्यान्वित किया गया है, यह सस्ता नहीं है। std :: mutex कंसुरेंसी रनटाइम के शीर्ष पर बनाया गया है, यह कार्यक्षमता के साथ कोड का एक हिस्सा है जो ओएस द्वारा प्रदान किए गए थ्रेडिंग और शेड्यूलिंग प्राइमेटिव से काफी विस्तारित है। लेयरिंग भारी है, जो मुफ्त में नहीं आती है। यदि कोई आलोचक आपके उद्देश्य की सेवा करता है और उपरांत वास्तव में मायने रखता है तो समस्या का शिकार करें और इसका इस्तेमाल करें। –
मैं बस लॉक/अनलॉक करने का समय था। मैं सिर्फ उत्सुक हूं कि std :: mutex आलोचक सेक से परे करता है। यदि यह उपयोगी है तो क्या मुझे यह नहीं चाहिए? यदि यह उपयोगी नहीं है तो यह क्यों करता है? सोचने में मैं std :: mutex का उपयोग करूंगा लेकिन मैं बस सोच रहा हूं कि यह अतिरिक्त क्या करता है। – Philip