Jos*_*hua 3 c++ mutex boost-mutex
我之前正在使用pthread_mutex_ts.代码有时会卡住.我有几行代码分散在我包装的函数中......
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
Run Code Online (Sandbox Code Playgroud)
不确定代码被卡住的方式/位置,我切换pthread_mutex_t到了boost:mutex
1)如果我只是用第1行替换第1行和第3 boost::lock_guard<boost::mutex> lock(map_mutex);行,并且一切都运行良好,那么pthread实现可能会出现什么问题?
2)我是否通过切换到提升而放弃了性能.这里的关键部分非常时间敏感,所以我希望互斥体非常轻巧.(C++,redhat)
如果在第1行和第3行之间抛出异常或函数返回,则互斥锁将不会被解锁.下次有人试图锁定它时,它们的线程将无限期地等待.
在Posix平台上,boost::mutex是一个非常薄的包装器pthread_mutex_t,lock_guard只包含对互斥锁的引用,并在其析构函数中解锁它.唯一的额外开销是初始化该引用(甚至可能会被优化掉),以及在异常/返回时解锁互斥锁所需的额外代码,无论如何都需要.
| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |