c++ - Boost::mutex - 是否可以将它锁定在一个类函数中并在另一个类函数中解锁?

标签 c++ multithreading boost mutex boost-thread

所以我们有函数 ab 的类。线程 one 调用 a 并且没有其他线程可以调用 ab 直到 one会调用 b。意思是线程 one 将能够调用 a 并且比 a 和 ... 而且比 a 和 while 一个 没有调用b 其他想要调用ab 的线程正在等待。是否可以用 boost::mutex 做这样的事情,如何做?

最佳答案

互斥体不是问题;这是锁。最简单的解决方案是 只是手动调用 mutex::lock()mutex::unlock(),忘记了 关于 mutex::scoped_lock;毕竟,您不希望锁 尊重范围。这个问题很常见;你可能 想在发生异常时释放锁。一种解决方案是 动态分配 mutex::scoped_lock,并使用 std::auto_ptrboost::shared_ptr 来管理它。 (奇怪的是,两者都不是 boost::mutex::scoped_lockstd::lock_guard 都是可移动的,所以你 需要动态分配才能转移所有权。)

关于c++ - Boost::mutex - 是否可以将它锁定在一个类函数中并在另一个类函数中解锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118460/

相关文章:

c++ - 将输入值与 vector 中的值进行比较

c++ - midifile : getDurationInSeconds is 0 for all events

Java 线程在 native 方法中阻塞等待 I/O 完成

c++ - 在线程中更改 GUI

c++ - 在 3 元素映射 C++ 中添加新项目并使用时间键搜索

c++ - 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程

c++ - 在Linux上广播IPC

c++ 可以使用 fstream infile 从最近使用的 ofstream outfile 中收集数据吗?

python - 将 mysql 连接传递给 python 线程时管道损坏

c++ - 提取大型库的小部分(fx boost)