我之前用的是pthread_mutex_t的。代码有时会卡住。我有几行代码分散在我包装的函数中……
pthread_mutex_lock(&map_mutex);// Line 1
//critical code involving reading/writing wrapped around a mutex //Line 2
pthread_mutex_unlock(&map_mutex); //Line 3不确定代码是如何/在哪里卡住的,我将pthread_mutex_t切换到了boost:mutex
1)如果我只是在第1行中用boost::lock_guard<boost::mutex> lock(map_mutex);替换了第1行和第3行,并且一切都完美地工作,那么pthread实现会出什么问题呢?
2)我是否通过切换到boost来放弃性能。这里的关键部分是非常时间敏感的,所以我希望互斥是非常轻量级的。(C++,redhat)
发布于 2012-08-21 21:19:11
boost::mutex是pthread_mutex_t的一个非常薄的包装器,而lock_guard只包含对互斥锁的引用,并在其析构函数中解锁它。唯一的额外开销将是初始化引用(即使是这样也可能被优化掉),以及在发生异常/返回时解锁互斥锁所需的额外代码,这是无论如何都需要的。https://stackoverflow.com/questions/12055602
复制相似问题