目次|前|次 |
スレッドの安全性 ImageReader
またはImageWriter
の特定のインスタンスについては、メソッドの再入可能(同時)呼出しをサポートする必要はありません(例外は、現在の読み込みまたは書込みを停止するように要求するabort
メソッドです)。しかし、同じプラグイン・クラスの複数のインスタンスが同時に稼動できるようにする必要はあります。簡潔にするため、読込みプラグインの場合についてのみ、このあと説明します。
完全な再入可能性をサポートするとしたら、読込みプラグインは、自身の状態情報(たとえば、現在の入力ソースなど)をすべて、別個の状態オブジェクトに入れておく必要があります。そうすれば、実行中のメソッドはその開始時に有効だった設定に従って作業を続けることができると同時に、別個のスレッドが状態を変更して次回の操作で使用することも可能になります。
もっと簡単な方法は、各ImageReader
が自身の状態をこの方法で保持することを強制するのではなく、マルチスレッドの処理を実行したいアプリケーションが同じImageReader
クラスの複数のインスタンスを生成するように定めることです。これは、ImageReader
の状態を必ずstatic以外のインスタンス変数を使って保持しなければならないことを意味していますが、プラグインの開発者にとってこの制約は重荷ではないはずです。