1

boost::details::pool::pthread_mutex和有什么区别boost::details::pool::null_mutex

我看到在最新的 boost 版本 - 1.42 中,该类 boost::details::pool::pthread_mutex已被删除。我应该改用什么?

4

1 回答 1

1

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 的互斥锁)。

于 2012-04-17T09:40:50.597 回答