में एक विशिष्ट आईडी पैदा समारोह बनाने के लिए कोशिश कर रहा है, और इस के साथ आया था:परमाणु वेतन वृद्धि और वापसी काउंटर
std::atomic<int> id{0};
int create_id() {
id++;
return id.load();
}
लेकिन मुझे लगता है यह संभव है कि समारोह में एक ही मूल्य दो बार, सही वापस जाने के लिए के लिए? उदाहरण के लिए, थ्रेड ए फ़ंक्शन को कॉल करता है, मान को बढ़ाता है, लेकिन फिर थ्रेड बी में आता है और मूल्य को भी बढ़ाता है, अंततः ए और बी दोनों एक ही मान वापस करते हैं।
तो mutexes का उपयोग कर, समारोह इस प्रकार दिखाई देंगे:
std::mutex mx;
int id = 0;
int create_id() {
std::lock_guard<std::mutex> lock{mx};
return id++;
}
मेरा प्रश्न: यह एक काउंटर केवल एटोमिक्स का उपयोग करने से अद्वितीय पूर्णांक मूल्यों को उत्पन्न करने के व्यवहार बनाने के लिए संभव है? कारण मैं पूछ रहा हूं क्योंकि मुझे बहुत सी आईडी बनाने की ज़रूरत है, लेकिन पढ़ें कि म्यूटेक्स धीमा है।