グラフィック・リソース > IlvResource:リソース・オブジェクトのベース・クラス > リソースの作成と定義:ロックとロック解除
 
リソースの作成と定義:ロックとロック解除
グラフィック・リソースの作成は、一般的にほとんどのグラフィック・システムでメモリーを多く使用するため、Rogue Waveィ Views ではキャッシング・メカニズムを実装してグラフィック・リソースの割り当てを最小限に抑えています。
リソース・オブジェクトは、ユーザー・アプリケーションの IlvDisplay インスタンスが保持します。これらは通常、演算子 newdelete を使用した作成や破壊は行いません。代わりに、Rogue Wave Views が、以下のメンバー関数を提供します。
*IlvDisplay メソッド getXXX。ここで XXXIlv プレフィックスの付かないリソース・クラス名 (たとえば、getColorgetFont など) を表します。
*メソッド IlvResource::lock および IlvResource::unLock はそれぞれ、リソースの内部参照カウントを増加、減少します。このカウントがゼロに達すると、リソースは削除されます。
ロックとロック解除の手順
グラフィック・リソースは、以下の方法で使用してください。
1. IlvDisplay インスタンスにリソースの割り当てを要求します。システムにこのリソースがすでに存在する (たとえば、問い合わせをした色がパレットですでに使用されている) 場合、それ以上の割り当ては行われず、既存のリソースが返されます。
2. IlvResource::lock を呼び出してこのリソースを保護する旨を Rogue Wave Views に伝えてから、そのリソースを使用します。
3. IlvResource::unLock を使用して、Rogue Wave Views にリソースの使用を終了した旨を伝えます。
リソース管理は、リソースのロックおよびロック解除方法と緊密に関係しています。永続オブジェクトの 1 つに特定のリソースが必要な場合は、必ずこのメカニズムを使用して、IlvDisplay インスタンス内でそのリソースを確実に保護してください。アプリケーションで IlvDisplay, のインスタンスを 2 つ以上必要とする場合、リソースは異なる IlvDisplay コンテキスト間で共有できないため、環境ごとにリソースを作成する必要があります。
リソースの実行中は、IlvResource::lock の呼び出し数は IlvResource::unlock の呼び出し数と完全に一致しなければなりません。lock の呼び出し数の方が多い場合は、リソースが不必要になった場合、つまりアプリケーションの要求が制限されてもリソースは割り当てられたままになります。unlock の呼び出し数の方が多い場合は、メモリー・エラーによりアプリケーションが破壊される可能性があります。
ロックとロック解除のルール
グラフィック・リソースのロックおよびロック解除については、次のルールに従ってください。
*リソースを取得したらロックして使用し、使用が終了したらロック解除します。
*確信が持てない限り、自分がロックしなかったリソースのロックを解除しないでください。
*ロックを解除した後にリソースを使用しないでください。これは、ポインターを解放した後に使用しないのと同様です。IlvResource::unLockdelete の可能性を意味します。
*リソースのロックやロック解除が必要でない場合があります。たとえば、オブジェクトの前景色を取得し、それをロックする別のオブジェクトに渡す場合です。この場合は、リソースのロックやロック解除は必要ありません。ロックやロック解除しても破損することはありません。

Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.