1
std :: lock_guard如何比std :: mutex :: lock()更快?
我正在与一位同事讨论关于lock_guard的问题,他提出lock_guard可能比Mutex :: lock()/ Mutex :: unlock()慢一些,原因是实例化和取消了类lock_guard的成本。 然后,我创建了一个简单的测试,令人惊讶的是,使用lock_guard的版本几乎比使用互斥锁:: lock()/互斥锁:: unlock()的版本快两倍。 #include <iostream> #include <mutex> #include <chrono> std::mutex m; int g = 0; void func1() { m.lock(); g++; m.unlock(); } void func2() { std::lock_guard<std::mutex> lock(m); g++; } int main() { auto t = std::chrono::system_clock::now(); for (int i = 0; i < 1000000; …