サービス先行解放とは,同期点でのメッセージ送信処理前にサービスを解放し,次のトランザクション(未読み出しメッセージ)の処理を先行して行えるようにすることです。UAPの処理(受信メッセージ処理)を早めるために,サービス先行解放を実行します。
サービス先行解放を実行するための条件を次に示します。
サービス先行解放のタイミングを次の図に示します。
図2-42 サービス先行解放のタイミング
ee_tim_execap関数でタイマトランザクションを即時起動する場合(actionにEETIM_JUSTを指定)などに,タイマ登録を行ったトランザクションが終了してからトランザクションを起動したいときは,flagsオプションにEETIM_SCDL_HOLDを指定します。
EETIM_SCDL_HOLDの指定によるメッセージ読み出しタイミングの違いを次の図に示します。
図2-43 EETIM_SCDL_HOLDの指定によるメッセージ読み出しタイミングの違い
EETIM_SCDL_HOLDを指定したタイマをキャンセルすると,EETIM_SCDL_HOLDを指定しなかったものとして,サービス解放時に次のメッセージをスケジュールします。
また,EETIM_SCDL_HOLDを指定した複数のタイマを登録した場合に,EETIM_SCDL_HOLDを指定したタイマをキャンセルすると,EETIM_SCDL_HOLDを指定したタイマが一つでもあれば,トランザクション終了時に次のメッセージをスケジュールします。
なお,EETIM_SCDL_HOLDを指定したタイマを登録したトランザクション(サービス)の同時実行数が複数かどうかに関係なく処理を行います。