boost::details::pool::pthread_mutex
和有什么区别boost::details::pool::null_mutex
。
我看到在最新的 boost 版本 - 1.42 中,该类 boost::details::pool::pthread_mutex
已被删除。我应该改用什么?
boost::details::pool::null_mutex
是一个什么都不做的互斥体(锁总是立即成功)。当您不使用线程时,它是合适的。Boost 池库根据以下代码段选择它将使用哪种互斥锁来同步对临界区的访问,以及互斥锁类型的 typedef boost\pool\detail\mutex.hpp
:
#if !defined(BOOST_HAS_THREADS) || defined(BOOST_NO_MT) || defined(BOOST_POOL_NO_MT)
typedef null_mutex default_mutex;
#else
typedef boost::mutex default_mutex;
#endif
换句话说,如果配置说不涉及线程(对于整个 Boost,或者特别是对于池库),那么null_mutex
将使用 (这基本上是一个 nop)。
如果要支持线程,则将boost::mutex
使用来自 Boost 线程库的类型(如果您的系统使用 pthread,它将是基于 pthread 的互斥锁)。