Avatar ·

std::unique_lock vs std::lock_guard: C++ में म्यूटेक्स के लिए क्या चुनें?

नमस्ते! मैंने C++11 में मल्टीथ्रेडिंग सीखना शुरू किया है और std::unique_lock और std::lock_guard के बीच चुनाव में उलझन में हूँ। दोनों क्लासेस म्यूटेक्स को लॉक करने के लिए उपयोग होते हैं, लेकिन मुझे समझ नहीं आ रहा कि किस स्थिति में किसका उपयोग करना चाहिए। उदाहरण के लिए, मैं एक सरल थ्रेड-सेफ काउंटर लिख रहा हूँ: ```cpp #include #include #include std::mutex mtx; int counter = 0; void increment() { for (int i = 0; i < 100000; ++i) { // यहाँ क्या बेहतर है? std::lock_guard lock(mtx); // या std::unique_lock lock(mtx); ++counter; } } ``` दोनों विकल्प कंपाइल होते हैं और काम करते हैं। लेकिन मैंने सुना है कि unique_lock "भारी" है। इसका उपयोग कब करना चाहिए? क्या ऐसी स्थितियाँ हैं जहाँ lock_guard उपयुक्त नहीं है? और क्यों?