以下のコードのように、実際には何も行わず、ただミューテックスの要件を満たすだけの実装は簡単に作れるでしょう。Null Objectパターンの一種と言えますよね。

class null_mutex
{
  void lock() {}
  void try_lock() {}
  void unlock() {}
};

Boostには、そんなクラスがなんだかあちこちにあるようです。

Boost.Threadのものが最も汎用的です。BoostのUpgradeLockableコンセプトまで実装しています。それに次ぐのがBoost.Interprocessのものです。残りはLockableコンセプト(lock, try_lock, unlock)のみ実装のようです。

私自身は、boost::signals2::dummy_mutexなら使ったことがあります。シングルスレッドでboost::signals2::signalを使うという状況でした。

スポンサード リンク

この記事のカテゴリ

  • ⇒ Boostのなんにもしないミューテ(ッ)クス