auto_resource

06/10/22

概要

shared_resourceの問題点を改善し、パフォーマンス向上と効率よいメモリ資源の利用、更にコーディングの手間削減を実現する。
auto_resourceには以下の長所がある。

ただし、以下の短所もある。

使用方法

LoadメソッドとSizeメソッドを実装したクラスTについて、auto_resource<T>が使える。
リソースの使用の際にはOpenしたのちGetResourceとすればT*型のリソースへのポインタが得られる。

メンバ関数

void Close()

リソースの使用を中止する。
明示的に呼び出す必要は無く、呼び出して参照カウントが0になってもすぐにはメモリ解放されないが、メモリ使用量が増大した場合には考慮される。

T* GetResource()

リソースへのポインタを得る。

void Open(const string& fileName)

リソースの使用を開始する。
既に読み込み済みのリストの中に一致するものがあれば読み込みは行わず、使いまわすためパフォーマンスが向上する。
リスト中のリソースが増えて限界メモリ使用量を超えた場合は古いリソースの解放を行うが、必ずしも精度はよくない。

その他の関数

void AutoResourceManager.SetMaxSize(DWORD dwMaxSize)

限界メモリ使用量を設定する。
この結果はすぐには反映されない。

T::Load

T型は、string型のファイル名を受け取り、読み込む関数を実装しなければならない。

T::Size

T型は、そのクラスのサイズを取得するための関数を実装しなければならない。
auto_resource自体があまり厳密ではないため、こちらもあまり厳密ではなく概数値でかまわない。