首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost::mutex性能与pthread_mutex_t

Boost::mutex性能与pthread_mutex_t
EN

Stack Overflow用户
提问于 2012-08-21 21:11:22
回答 1查看 2.2K关注 0票数 3

我之前用的是pthread_mutex_t的。代码有时会卡住。我有几行代码分散在我包装的函数中……

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-21 21:19:11

  1. 如果在第1行和第3行之间抛出异常或函数返回,则互斥锁将不会解锁。下次有人试图锁定它时,他们的线程将在Posix平台上等待,boost::mutexpthread_mutex_t的一个非常薄的包装器,而lock_guard只包含对互斥锁的引用,并在其析构函数中解锁它。唯一的额外开销将是初始化引用(即使是这样也可能被优化掉),以及在发生异常/返回时解锁互斥锁所需的额外代码,这是无论如何都需要的。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12055602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档