サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

10.4.1の新機能: 新しいTLightweightMREW レコード

10.4.1では、品質向上に重点を置いたリリースですが、いくつかの新機能が含まれており、それらの多くは、今まで未解決だった問題を解決する目的のために追加された機能です。

そのシナリオの1つに、RTL同期オブジェクトの改善があり、特にモバイルアプリケーションでTMultiReadExclusiveWriteSynchronizer(別名 TMREWSync)を使用する際の問題に対処しています。ただしWindows OSが提供するものと同等の機能が不足していたため、TMREWSyncクラスは他のプラットフォームへの実装が制限されていました。

新しいTLightweightMREW レコード

10.4.1では、すべてのサポート プラットフォームにわたって動作することを目的として、古いTMREWSyncクラスより高速で軽量な、新しい読み書きロックの実装が導入されました。TLightweightMREW は、各プラットフォームにおける読み書きロックのネイティブなPOSIX APIをラッピングしているため、最良の代替手段の一つと言えます。

さらにこの新しいレコードは、レコードの作成や解放の必要性を減らすため、管理レコードとして実装されております。

TLightweightMREWレコード型は、System.SyncObjsユニットの一部で、読み書きロック(MRSWロックまたはMREWロックとしても知られています)のネイティブ実装をラップしています。スレッドはTLightweightMREWを使用して、頻繁に読み取るけれどほとんど書き込まないリソースへのアクセスを同期させることができます。

 読み取り/書き込みロックは、2種類のアクセスを提供します。 共有(読み取り)アクセスを使用すると、複数のリーダーが同時にリソースへアクセスでき、スレッドが排他的(書き込み)アクセスを取得するのを防ぎます。 排他的(書き込み)アクセスでは、1つのライターのみがリソースにアクセスでき、すべてのリーダーもブロックされます。

共有読み取りアクセス

排他的な書き込みアクセス

プラットフォームによる動作の違い

TLightweightMREWの実装はオペレーティングシステムに依存しており、ロック機能は、サポートされているすべてのプラットフォームで同じ実装です。以下の項目は、すべてのプラットホームで共通の動作です。

以下の項目は、プラットホーム(OS)によって異なる動作です。

docwikiに記載されているTLightweightMREWクラスのリファレンス情報は、以下の通りです。

(現時点では、英語版のドキュメントのみTLightweightMREWクラスに関する説明が記載されています。)

まとめ

10.4.1 は、品質向上に重点を置いた非常に注目すべきリリースで、500 以上のお客様から報告された問題が解決されていることに加え、新しい TLightweightMREW レコードのような新機能も追加されています。さらに10.4.1では、10.4 で導入された新しい LSP ベースの Delphi Code Insight の実装が大幅に改善されています。詳しくはこちらを参照ください。

モバイルバージョンを終了