2010-02-16 15 views
36

Tercih edilen boost::lock_guard veya boost::mutex::scoped_lock?boost :: lock_guard vs destek :: mutex :: scoped_lock

Boost'u kullanıyorum.Kullanılabilir olduğunda C++ 11 iş parçacığına geçiş yapma umuduyla.

scoped_lock Sonraki C++ standardının bir parçası mı?

Birini diğerine tercih etme avantajı var mı?


NOT: Ben scoped_lock sadece typedeflock_guard ait olduğunu farkındayım.


düzenleme: scoped_lock yanlış olduğunu değillock_guard bir typedef olduğunu. 'un typedef numarasıdır.

cevap

28

Amit doğru: boost::mutex::scoped_lock, boost::unique_lock<boost::mutex> için typedef, lock_guard değil. scoped_lock, C++ 0x'de kullanılamaz. Eğer unique_lock esnekliğini gerekmedikçe

, ben lock_guard kullanmak. Daha basittir ve kilidi tanımlanmış bir kapsam ile sınırlama niyetini daha açık bir şekilde ifade eder.

24

İkisi arasında çok fazla fark yoktur. Boost, scoped_lock uyarınca, unique_lock<mutex> için bir yazım hatasıdır. Her ikisi de unique_lock ve lock_guard RAII tarzı kilitleme uygular. arasındaki fark unique_lock daha karmaşık bir arayüze sahip basitçe olmasıdır - bu kilidi ve çağrı kilidini erteleme verir.

İlgili konular