これらの要件に適合するロックのない設計を探しています。
- 単一のライターが構造体に書き込み、単一のリーダーがこの構造体から読み取ります (この構造体は既に存在し、同時読み取り/書き込みに対して安全です)
- しかし、ある時点で、構造体は writer によって変更される必要があり、初期化、切り替え、および新しい構造体への書き込み (同じ型であるが新しい内容を持つ)
- 次にリーダーが読み取るときに、この新しい構造に切り替えます(ライターが新しいロックフリー構造に複数回切り替えた場合、リーダーはこれらの構造を破棄し、そのデータを無視します)。
- 構造体は再利用する必要があります。つまり、 RT の目的で、書き込み/読み取り/切り替え操作中にヒープ メモリの割り当て/解放は許可されません。
現在、これらの構造の複数のインスタンスを含むリングバッファーを実装しています。しかし、この実装は、ライターがリングバッファーに存在するすべての構造を使用すると、構造から変更する場所がなくなるという事実に悩まされています...しかし、リングバッファーの残りの部分には、読み取る必要のないデータが含まれていますリーダーによって再利用できますが、ライターは再利用できません。結果として、リングバッファはこの目的に適合しません。
ロックフリー設計のアイデア(名前または疑似実装)はありますか? この問題を検討していただきありがとうございます。