boost相当于windows互斥锁
boost equivalent to windows mutex
在Mac OS上的boost land中,以下代码将自身死锁:
boost::mutex m;
m.lock();
m.lock();
也是如此
boost::mutex m;
boost::mutex::scoped_lock lock(m);
boost::mutex::scoped_lock lock(m);
在Windows环境中,只要释放次数相同,同一个线程就可以随心所欲地获得Win32互斥。我需要一个提升同步对象的确切行为。
您需要的是一个boost::recursive_mutex:
recursive_mutex类使用递归锁定策略,因此尝试递归锁定recursive_mutex对象成功,并保持内部"锁计数"。没有锁的线程尝试解锁recursive_mutex对象会导致未定义的行为。
请注意,boost::mutex:
互斥对象类使用Unspecified锁定策略,因此尝试递归地锁定互斥对象或由没有锁定的线程尝试解锁互斥对象会导致未定义的行为。这种策略允许在任何给定的平台上尽可能高效地实现。
在计算机科学中,递归互斥被称为Reentrant互斥:
在计算机科学中,可重入互斥是一种互斥的递归锁机制。在可重入互斥体中,同一线程可以多次获取锁。但是,锁必须释放相同次数,否则其他线程将无法获取锁
尝试使用递归互斥:由于boost::互斥不是递归的,我们需要使用其递归版本boost::recursive_mutex
相关文章:
- 相当于LocaleMatcher的ICU4C
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- C++相当于整数的 #define
- 什么相当于 Kotlin 上的C++指针?
- 相当于 Java 中的C++结构
- 霓虹灯中的_mm_hadd_ps相当于什么?
- 相当于 VirtualAlloc() 的_set_new_handler?
- 对于 poco 库来说,Boost_USE_STATIC_LIBS相当于什么?
- 什么 clang-format 相当于 rustfmt 的 indent_style=Block?
- 相当于Linux fifo的Windows
- 相当于Windows/MSVC上的段错误?
- Linux相当于Windows的EnterCriticalSection
- 相当于 Windows API 中的 Linux 上的 lseek
- boost相当于windows互斥锁
- 在linux上安装自定义字体(相当于windows AddFontResource)
- 在Windows中向COM端口写入位-相当于INPORTB函数
- 相当于 Mac OS X 中 Windows 命名的互斥锁?
- 是否有相当于Windows命名管道的Mac OS X。
- 相当于gnu中windows stdint.h中的u_int16_t
- 相当于mac的windows.h