(toppers-users 3341) Re: JSP1.4.3 mailboxについて

Meika Sugimoto asuka.choronos @ gmail.com
2010年 12月 21日 (火) 20:13:19 JST


今様

杉本です.

解決されたようでよかったです.
重複して送信してしまうのはよくありますよね.
(私も経験があります…)

メールボックスの場合,どうしてもメッセージヘッダを
破壊してしまう可能性がつきまといますので,可能で
あればデータキューでポインタを送信する形にすると
よいかもしれません.


少々メールボックスについて余談を.
メールボックスのよいところとしては

1.送信データ数に制限がない
2.メッセージ優先度順で送信できる

という点が挙げられます.前者は結局のところメッセージ
領域が有限であるのでたいしたメリットとは言えません.
ですのでメールボックスを使用する理由は後者にあると
思いますが,それ以外のシチュエーションではデータキューの
方が安全です.

今回はJSPをお使いとのことなので範囲外ですが,TOPPERS/ASPでは
先の2.の要求を満たすために優先度付きデータキューが用意され,
メールボックスを使用しないでもいいようになっています.

以上,よろしくお願いします.

(2010/12/21 11:03), Nozomu Kon wrote:
> 杉本様
> 
> ご回答ありがとうございます。
> 
>> とのことですが,メールボックスの先頭部分である
>> メッセージヘッダの領域を何らかの理由で破壊していないでしょうか?
> 
> メッセージはstatic化していたので問題なかったのですが、
> メッセージヘッダが重複するメッセージ送信要求で
> 上書きされているようでした。
> 
> お恥ずかしながら、アプリケーション側の問題でした。
> 
> --
>   今  望武
> 
> 
> (2010/12/21 10:32), Meika Sugimoto wrote:
>> 今様
>>
>> 杉本と申します.
>>
>> メールボックスは特別なことを行わない限り,
>> FIFOでメッセージを処理します.
>>
>> ですので,送信時にlastにつなげ,受信時にheadから
>> 取り出す動作で正しいです(処理の意味から言っても妥当です).
>>
>>> タスクBがメッセージEND(NULL)を検出できなくなり、
>>> タスクBの無限ループに陥っています。
>> とのことですが,メールボックスの先頭部分である
>> メッセージヘッダの領域を何らかの理由で破壊していないでしょうか?
>> 例えばローカル変数をメッセージヘッダに使用すると
>> 関数を抜けたときにスタックが解放されてしまい,他の
>> 関数で上書きしてしまったりします.
>>
>> 以上,よろしくお願いします.
>