Avatar ·

std::unique_lock против std::lock_guard: что выбрать для мьютекса в C++?

مرحباً! بدأت تعلم تعدد الخيوط في C++11 وأصبحت مرتبكاً في الاختيار بين std::unique_lock و std::lock_guard. كلا الكلاسين يُستخدمان لقفل mutex، لكنني لا أفهم في أي الحالات يُستخدم كل منهما.\n\nعلى سبيل المثال، أكتب عداداً بسيطاً آمن الخيوط:\n\n```cpp\n#include \n#include \n#include \n\nstd::mutex mtx;\nint counter = 0;\n\nvoid increment() {\n for (int i = 0; i < 100000; ++i) {\n // ما الأفضل هنا؟\n std::lock_guard lock(mtx);\n // أو\n std::unique_lock lock(mtx);\n ++counter;\n }\n}\n```\n\nكلا الخيارين يتم تجميعهما ويعملان. لكنني سمعت أن unique_lock "أثقل". متى يجب استخدامه؟ هل هناك حالات لا يناسبها lock_guard؟ ولماذا في

لا توجد إجابات بعد.

تسجيل الدخول لترك إجابة

المدونات