2017-12-05 15 views
1

私は、同期が必要な一連のフィールドを含むオブジェクトAを持っています。読み書き同時実行

1)複数のスレッドが同時にオブジェクトのフィールドを読み取ることができます。 2)少なくとも1つのスレッドがオブジェクトから読み取っている場合、オブジェクトは変更できません。 3)オブジェクトが変更されている場合、スレッドはオブジェクトから読み取ることができません。

つまり、任意の数のリーダーがロックを保持できるようなロックが必要です。しかし、いずれかの作家がロックを保持している場合は、ロックを保持することはできません。

どうすればよいですか?私はC++を使用していますが、言語に依存しない方法が必要です。

答えて

1

お探しのコンセプトはReaders-Writer-Lockです。そこにはC++の実装があります。特に、boost::threadに1つあります。このアイデアは、一意のロック(書き込み時)を必要とするようにアップグレードできる単一の(論理的、2つのmutexを使用して内部的に実装されたmutex)読み書き用のmutexを使用し、読み込み時に複数のreaderを同時にロックできるということです。

関連する問題