2010-02-16 18 views
36

जिसे boost::lock_guard या boost::mutex::scoped_lock पसंद किया गया है?boost :: lock_guard vs boost :: mutex :: scoped_lock

मैं बूस्ट का उपयोग कर रहा हूं। यह उपलब्ध होने पर सी ++ 11 थ्रेडिंग पर जाने की उम्मीद के साथ पढ़ें।

scoped_lock अगले सी ++ मानक का हिस्सा है?

क्या एक दूसरे को पसंद करने के लिए कोई फायदे हैं?


नोट: मुझे पता है कि scoped_lock सिर्फ एक lock_guard की typedef है हूँ।


संपादित करें: मैं गलत scoped_lock था नहींlock_guard के typedef है। यह unique_lock का typedef है।

उत्तर

28

अमित सही है: boost::mutex::scoped_locktypedefboost::unique_lock<boost::mutex> के लिए lock_guard नहीं है। scoped_lock सी ++ 0x में उपलब्ध नहीं है।

जब तक आपको unique_lock की लचीलापन की आवश्यकता नहीं है, तो मैं lock_guard का उपयोग करूंगा। यह आसान है, और लॉक को परिभाषित दायरे में सीमित करने के इरादे को स्पष्ट रूप से व्यक्त करता है।

24

दोनों के बीच बहुत अंतर नहीं है। Boost के अनुसार, scoped_lockunique_lock<mutex> के लिए एक टाइपिफ़ है। unique_lock और lock_guard दोनों RAII-शैली लॉकिंग को लागू करते हैं। बीच अंतर यह है कि unique_lock में एक जटिल जटिल इंटरफ़ेस है - यह लॉक को रोकने और अनलॉक कॉल करने की अनुमति देता है।

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