boost::details::pool::pthread_mutex
和boost::details::pool::null_mutex
之间的区别是什么。boost :: details :: pool :: pthread_mutex和boost :: details :: pool :: null_mutex
我看到在最新的升级版本 - 1.42中,类boost::details::pool::pthread_mutex
已被删除。我应该用什么来代替?
boost::details::pool::pthread_mutex
和boost::details::pool::null_mutex
之间的区别是什么。boost :: details :: pool :: pthread_mutex和boost :: details :: pool :: null_mutex
我看到在最新的升级版本 - 1.42中,类boost::details::pool::pthread_mutex
已被删除。我应该用什么来代替?
boost::details::pool::null_mutex
是一个什么也不做的互斥锁(锁总是立即成功)。当你不使用线程时是合适的。升压池库中选取它会用什么样的互斥与基于下面的代码片段的互斥体类型的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的互斥锁)。
所以提升:详细:: poolLpthread_mutex被转移到boost:thread :: mutex? – Shay 2012-04-17 10:43:53
我不知道它是如何设置的 - 只是现在这个互斥量默认是一个boost :: mutex的typedef,如果boost配置为线程。也许在boost :: pool有自己的自定义线程支持之前,他们决定在某些时候利用boost :: thread库(我只是猜测 - 我目前只安装了1.49)。 – 2012-04-17 11:07:57
我相信最新发布的Boost版本是1.49。升压1.42是一个几岁... – 2012-04-17 09:35:37