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:
uint sz 取得したいメモリの容量を指定する

Returns:
取得したメモリの先頭ポインタが返る。 このポインタは free により確実に返却されなければならない

abstract void free (void* p);
メモリの返却

Params:
void* p 同じAllocatorのインスタンスのmalloc関数で得たポインタを指定

template newobj (T)
オブジェクトの獲得

Params:
args コンストラクタの引数を指定する

Returns:
インスタンスオブジェクトが返る。 このインスタンスは必ず destroy 関数を使って返却しなければならない

T[] newary (T)(size_t sz);
配列の獲得

Params:
sz 配列のサイズを指定する

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 と同義

Page was generated with on Fri Apr 3 17:07:43 2009