1

boost::details::pool::pthread_mutexとはどう違いboost::details::pool::null_mutexますか?

最新のブースト バージョン - 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 に答える