2012-06-23 19 views
24

अगर मैं std::mutex लॉक करता हूं तो क्या मुझे हमेशा मेमोरी बाड़ मिल जाएगी? मैं अनिश्चित हूं अगर यह आपको बाड़ पाने के लिए तात्पर्य या लागू करता है।क्या std :: mutex एक बाड़ बनाते हैं?

अद्यतन:

इस संदर्भ RMF की टिप्पणी पर निम्नलिखित मिले।

Multithreaded programming and memory visibility

उत्तर

10

एक म्युटेक्स म्युटेक्स ताला लगा के साथ सिंक्रनाइज़ अनलॉक कर रहा है। मुझे नहीं पता कि कंपाइलर के कार्यान्वयन के लिए कौन से विकल्प हैं, लेकिन आपको बाड़ का एक ही प्रभाव मिलता है।

+1

मुझे लगता है कि ओपी म्यूटेक्स के अलावा अन्य स्मृति स्थानों के लिए बाड़ लगाने के बारे में पूछ रहा है। – Mysticial

+2

मुझे समझ में नहीं आता है। सी ++ में बाड़ विशिष्ट स्मृति स्थानों को प्रभावित नहीं करते हैं। –

+5

मैं यह कह रहा हूं: मान लें कि कोर ए 'ए [0]' को लिखता है और फिर म्यूटेक्स जारी करता है। फिर कोर बी म्यूटेक्स प्राप्त करता है और 'ए [0] 'पढ़ता है (कैश समेकन बी के लिए' ए [0] 'के नए मूल्य को फैलाने से पहले) दूसरे शब्दों में, एक म्यूटेक्स बल सभी मेमोरी स्थानों को ऊपर उठाने के लिए मजबूर करता है- लौटने से पहले आज तक। – Mysticial

10

मुझे यह समझ के रूप में में शामिल है:

1.10 मल्टी पिरोया फांसी और डेटा दौड़

पैरा 5:

पुस्तकालय डी फाई परमाणु आपरेशन के एक नंबर (एनईएस क्लॉज 2 9) और म्यूटेक्स (क्लॉज 30) पर ऑपरेशंस जो विशेष रूप से सिंक्रनाइज़ेशन ऑपरेशंस के रूप में पहचाने जाते हैं। ये ऑपरेशन एक थ्रेड में असाइनमेंट करने में एक विशेष भूमिका निभाते हैं जो दूसरे को दिखाई देता है। एक या अधिक मेमोरी स्थानों पर एक सिंक्रनाइज़ेशन ऑपरेशन या तो एक उपभोग ऑपरेशन, एक अधिग्रहण ऑपरेशन, एक रिलीज ऑपरेशन, या दोनों अधिग्रहण और रिलीज ऑपरेशन है। एक संबंधित स्मृति स्थान के बिना एक सिंक्रनाइज़ेशन ऑपरेशन एक बाड़ है और या तो एक अधिग्रहण बाड़, एक रिलीज बाड़, या एक अधिग्रहण और रिलीज बाड़ दोनों हो सकता है। इसके अलावा, आराम से परमाणु संचालन होते हैं, जो सिंक्रनाइज़ेशन ऑपरेशंस नहीं होते हैं, और परमाणु पढ़ने-संशोधित-लेखन संचालन, जिनमें विशेष विशेषताएं होती हैं। [नोट: उदाहरण के लिए, एक म्यूटेक्स प्राप्त करने वाला एक कॉल म्यूटेक्स वाले स्थानों पर एक अधिग्रहण ऑपरेशन करेगा। इसके अनुरूप, एक कॉल जो एक ही म्यूटेक्स जारी करता है, उसी स्थान पर रिलीज ऑपरेशन करेगा। अनौपचारिक रूप से, अन्य मेमोरी स्थानों पर एक बल पूर्व पक्ष ई एफएफ ईक्ट्स पर रिलीज ऑपरेशन करने के बाद अन्य थ्रेडों के लिए दृश्यमान बनने के लिए जो बाद में उपभोग करते हैं या ए "आराम से" परमाणु संचालन पर अधिग्रहण ऑपरेशन सिंक्रनाइज़ेशन ऑपरेशन नहीं होते हैं, सिंक्रनाइज़ेशन ऑपरेशंस की तरह, वे डेटा दौड़ में योगदान नहीं दे सकते हैं। -जेंड नोट]

संबंधित मुद्दे