voile.allocator
メモリ割り当てに関するモジュール
AllocatorおよびIDisposableを提供します。
GCにとらわれないフレキシブルなメモリ割り当てを補助します。
- IDisposable
- Allocator
- nogc
- antigc
- gc
- newary
- newobj
- create
- destroy
Date:
December 12, 2008
Author:
P.Knowledge, SHOO
Lisence:
NYSL ( http://www.kmonos.net/nysl/ )
- abstract interface
IDisposable
;
- 破棄することによりリソースの解放などを行うことを目的とするインターフェース
このインターフェースを継承し、disposeをオーバーライドしたものは、
Alloactorのdestroy()で解放される際、dispose()が呼び出される。
- abstract void
dispose
();
- データの破棄を行う
これ以降使用することはできない。
ただし、 isDisposed の呼び出しだけは許可される。
- abstract bool
isDisposed
();
- データが破棄されているかどうか
データが破棄されている場合は true が返る。
データ破棄のあとにも呼び出すことが可能。
- abstract class
Allocator
;
- アロケータ
アロケータのベースクラス。
カスタマイズする場合は malloc() 及び free() を実装することで
メモリ割り当てと解放を行えるようにする。
生成/取得は newobj, newary, create, borrow, malloc により可能となっている。
ただし、 borrow は create の別名である。
削除/返却は destroy, release, repay, free により可能となっている。
ただし、 release, repay はそれぞれ destroy の別名である。
gc と nogc が最初から定義されている。
- abstract void*
malloc
(uint sz);
- メモリの獲得
Params:
Returns:
取得したメモリの先頭ポインタが返る。
このポインタは free により確実に返却されなければならない
- abstract void
free
(void* p);
- メモリの返却
Params:
void* p |
同じAllocatorのインスタンスのmalloc関数で得たポインタを指定 |
- template
newobj
(T)
- オブジェクトの獲得
Params:
Returns:
インスタンスオブジェクトが返る。
このインスタンスは必ず destroy 関数を使って返却しなければならない
- T[]
newary
(T)(size_t sz);
- 配列の獲得
Params:
Returns:
配列のインスタンスが返る。
このインスタンスは必ず destroy 関数を使って返却しなければならない
- template
create
(T)
alias
borrow
;
- インスタンスの獲得
Params:
args |
オブジェクトならコンストラクタ、配列なら個数を指定する |
Returns:
オブジェクトまたは配列のインスタンスが返る。
このインスタンスは必ず destroy 関数を使って返却しなければならない
- void
destroy
(T)(ref T inst);
alias
release
;
alias
repay
;
- インスタンスの破棄
インスタンスを破棄する。破棄の際にインスタンスがオブジェクトであれば
disposeおよびデストラクタを実行する
Params:
inst |
newobj/newary/create/borrowで獲得したインスタンスを指定 |
- NoGCAllocator
nogc
;
- GCを使用しないアロケータ
GCを使用しないためISRなどで利用することが可能。
また、よりリアルタイム性の高いシビアな動作時にGCを働かせないために
利用することも。
- AntiGCAllocator
antigc
;
- GCを全く使用しないアロケータ
nogcはGCを使用しないものの、ルートや範囲の登録などは行う。
これは、その内部にGCで取得したオブジェクトなどが含まれていた場合、
GCに回収されてしまうためであった。
しかし、こちらのアロケータはルートや範囲を行わない。
つまり、このアロケータにより呼び出される参照型やポインタは、
GCによって取得された参照型やポインタを含むことはできない。
- GCAllocator
gc
;
- GCを使用するアロケータ
GCを使用する。アロケータにインターフェースをあわせただけ。
GCを利用するが、これはfreeやdestroyを利用しなくてもよいというわけではない。
必ず取得したものは返却すること。
- template
newobj
(T)
- nogc.
newobj
と同義
- T[]
newary
(T)(size_t sz);
- nogc.
newary
と同義
- template
create
(T)
- nogc.
create
と同義
- void
destroy
(T)(ref T inst);
- nogc.
destroy
と同義
- alias
release
;
- nogc.
release
と同義
- alias
borrow
;
- nogc.
borrow
と同義
- alias
repay
;
- nogc.
repay
と同義
|