(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の無限ループに陥っています。
>> とのことですが,メールボックスの先頭部分である
>> メッセージヘッダの領域を何らかの理由で破壊していないでしょうか?
>> 例えばローカル変数をメッセージヘッダに使用すると
>> 関数を抜けたときにスタックが解放されてしまい,他の
>> 関数で上書きしてしまったりします.
>>
>> 以上,よろしくお願いします.
>