TSCThreadFactory(C++)
TSCThreadFactoryはシステム提供クラスです。
TSCThreadFactoryは,TSCThreadを生成または削除するメソッドを持つオブジェクトのインタフェースです。
ユーザはTSCThreadFactoryを継承させて,TSCユーザスレッドを生成および削除するクラスを定義し,TSCユーザスレッドのファクトリとして派生クラスのインスタンスを生成します。次にTSCThreadFactoryの特徴を示します。
OTMからの呼び出しによるTSCThreadの管理
OTMは,TSCThreadFactoryのcreateを呼び出すことで,返されるTSCThreadをそのスレッドに割り当ててスレッドを生成します。逆に,そのスレッドに割り当てたTSCThreadを引数にdestroyを呼び出すことで,生成したスレッドを削除します。
形式
class TSCThreadFactory;
typedef TSCThreadFactory* TSCThreadFactory_ptr;
class TSCThreadFactory
{
public:
TSCThreadFactory();
virtual ~TSCThreadFactory();
virtual TSCThread_ptr create() = 0;
virtual void destroy(TSCThread_ptr tsc_thr) = 0;
};
インクルードファイル
#include <tscobject.h>
コンストラクタ
●TSCThreadFactory()
TSCThreadFactoryを生成します。
デストラクタ
●virtual ~TSCThreadFactory()
TSCThreadFactoryを削除します。
コールバックメソッド
●virtual TSCThread_ptr create()
項目 | 型・意味 |
---|---|
戻り値 | 管理されるTSCThread |
例外 | 各種TSCSystemException |
TSCThreadを返します。TSCユーザスレッドを生成するコードを記述できます。OTMがこのメソッドを呼び出した結果,返されたTSCThreadが管理対象となります。
管理対象とするTSCThreadのメモリ領域の管理責任はOTMにあるので,ユーザは削除しないでください。なお,OTMは,複数のスレッド上から同時にこのメソッドを呼び出すので,ユーザはマルチスレッド環境に対応するリエントラントなコードを記述する必要があります。
また,create呼び出しに失敗した場合は,各種のTSCSystemExceptionによって通知する形でコードを記述してください。
●virtual destroy(TSCThread_ptr tsc_thr)
項目 | 型・意味 | |
---|---|---|
引数 | TSCThread_ptr tsc_thr | 管理対象から外すTSCThread |
例外 | ありません。 |
TSCThreadを消去する前の処理のコードを記述できます。OTMがTSCユーザスレッドを管理対象から外すとき,該当するTSCThreadを引数に指定して,このメソッドを呼び出します。
管理対象から外されたTSCThreadのメモリ管理責任はユーザにあります。ユーザは,必要に応じて削除してください。なお,OTMは,複数のスレッド上から同時にこのメソッドを呼び出すので,ユーザはマルチスレッド環境に対応するリエントラントなコードを記述する必要があります。
なお,コネクション切断などの障害時には,TSCユーザスレッドを生成したスレッドとは別のスレッドでdestroy()を発行することがあります。
また,このメソッドから通知した例外は無視されます。
TSCThreadFactoryの派生クラスの生成と削除
TSCThreadFactoryの派生クラスは,newオペレータで生成し,deleteオペレータで削除します。OTMがTSCThreadの公開メソッドを呼び出しているとき,またはユーザがTSCThreadの公開メソッドを呼び出しているときは削除できないため,公開メソッドを呼び出していない状態で削除してください。
マルチスレッド環境でのメソッド呼び出し規則
マルチスレッド環境で,TSCThreadFactoryクラス型のインスタンスのメソッドを呼び出す規則を次に示します。なお,これらのメソッドは,OTMが呼び出します。
メソッド | 複数のスレッド上からの同時呼び出し |
---|---|
create | できます。 |
destroy | できます。 |