複数のスレッドから同時に安全にアクセスできるように、多数のデータ クラスのゲッターとセッターへのアクセスを制御したいと考えています。以前に Java で java.util.concurrent.locks.ReentrantReadWriteLock を使用してこれを行ったことがありますが、非常に簡単でした。
しかし、再入可能な読み取り/書き込みロックの実装が見つからないため、現在の C++ プロジェクトで多くの問題が発生しています。具体的には、スレッドが既に書き込みロックを持っている場合、ブロックせず、最初に書き込みロックを放棄することなく、スレッドが読み取りロックを取得できるようにする必要があります。
理由は簡単です。いくつかのセッター メソッドはゲッター メソッドを呼び出し、前者は (通常) 書き込みロックを取得し、後者は読み取りロックを取得します。ロック クラスの制限を回避するためだけに、単純な getter/setter アーキテクチャをゆがめたくはありません。
Qt (4.8) QReadWriteLock と関連クラス、Boost の unique_lock と shared_lock を試しました。どちらのライブラリも、私が必要とする再入可能性を実装していません。ブーストの他の部分はこれに対処していますか?
または、これを持っている他のライブラリがありますか?QtもBoostも明らかに望ましい機能のように見えるので、私は本当に驚いています。(そして、2004 年から Java 標準ライブラリの一部になっています。)