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