スレッド: [becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?

スレッド

[becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?

[ | ▲ / | ]
Subject:
[becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?
From:
Miura Takuma <mueller@...>
Date:
Sun, 11 Aug 2002 20:56:25 +0900
X-Mailer:
Becky! ver. 2.00.08
Message-Id:
<20020811204857.08C0.MUELLER‐at‐csc.jp>
こんばんは.いつもどうも.

 BKC_OnSendの使い方でひとつ頭を抱えています.
 このコールバック関数からの返り値によって,送信メールのその後の
 身の振り方が決まるわけですが,返り値を決定できるまで,
 (より具体的には,BkCMが送信に成功したか失敗したか確定できるまで)
 BKC_OnSendを終了できないのでBecky!本体が固まったままに
 なってしまいます.

 ためしにOnSendのなかから送信用スレッドを呼び出す形にしてみたところ
 快適にはなったのですが,これだと「とりあえず送信成功」で
 返り値を返してコールバックを抜け,あとから「やっぱり送信失敗」と
 判明することになってしまうのです.

 コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
 もらうということは,無理なんでしょうか.
--

::===========================================================
:: 三浦 琢磨  <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================

[becky-pin:02323] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?

[ | / | ]
Subject:
[becky-pin:02323] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
From:
shinonon <shinonon@...>
Date:
Sun, 11 Aug 2002 21:15:13 +0900
X-Mailer:
Becky! ver. 2.05.04
Message-Id:
<20020811210602.3571.SHINONON‐at‐jcom.home.ne.jp>
In-Reply-To:
2322
References:
2322
しののんです。

Miura Takuma さんの「[becky-pin:02322] コールバック関数の中にいる限り,
メインルーチンは止まったまま?」より…

>  コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
>  もらうということは,無理なんでしょうか.

Becky! のメインスレッドのメッセージループを呼び出すようにすればいいでしょ
う。
#Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
#はどうなんでしょう?>識者の方

ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。

(BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
ておいた方がいいでしょう。

▲▽《篠田 敦》      shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲

[becky-pin:02324] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?

[ | / | ]
Subject:
[becky-pin:02324] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
From:
Miura Takuma <mueller@...>
Date:
Sun, 11 Aug 2002 21:32:20 +0900
X-Mailer:
Becky! ver. 2.00.08
Message-Id:
<20020811212930.08C2.MUELLER‐at‐csc.jp>
In-Reply-To:
2323
References:
2322 2323
> Becky! のメインスレッドのメッセージループを呼び出すようにすればいいでしょ
> う。
> #Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
> #はどうなんでしょう?>識者の方

 私もDelphianなのでこれで試してみます.


> ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。

 「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?


> (BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
> ておいた方がいいでしょう。

 ここの具体的な方法も後学のために聞いておきたいところですが・・・
 頭からはみ出てしまうのでまたこんど(^^;).
--

::===========================================================
:: 三浦 琢磨  <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================

[becky-pin:02325] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?

[ | / | ]
Subject:
[becky-pin:02325] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
From:
shinonon <shinonon@...>
Date:
Sun, 11 Aug 2002 21:53:20 +0900
X-Mailer:
Becky! ver. 2.05.04
Message-Id:
<20020811214528.3232.SHINONON‐at‐jcom.home.ne.jp>
In-Reply-To:
2324
References:
2323 2324
しののんです。

Miura Takuma さんの「[becky-pin:02324] Re: コールバック関数の中にいる限
り,メインルーチンは止まったまま?」より…

> > ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> > まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
>
>  「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?

BkCMだと例えば、
 {HTTPにリクエストを出す}
 while {HTTPから戻り値が帰ってくるまで} do begin
   {タイムアウトを判定する}
   Application.ProcessMessages;
   Sleep(1);
 end;
こんなような感じでしょうか?
Sleep(1); がないと Becky! が CPUタイムをすべて使い果たしてしまいます。
また BKC_OnSend を処理するプラグインの定めとして、何があっても必ず戻り値
を返さなければならないので、タイムアウト処理はきちんとしておいたほうがい
いでしょう。

▲▽《篠田 敦》      shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲

[becky-pin:02326] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?

[ | / ▼ | ]
Subject:
[becky-pin:02326] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
From:
Miura Takuma <mueller@...>
Date:
Sun, 11 Aug 2002 22:26:37 +0900
X-Mailer:
Becky! ver. 2.00.08
Message-Id:
<20020811222348.08CA.MUELLER‐at‐csc.jp>
In-Reply-To:
2325
References:
2324 2325
 素早いお答えありがとうございました.
 他言語で書かれたプログラムに対しても,Application変数は
 有効だったんですね.

 タイムアウトは確かに必須ですね.
 またいろいろいじってみます.
--

::===========================================================
:: 三浦 琢磨  <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here