PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
12506 | 00/08/01 15:01:31 | RE(3):PB6.5: マルチスレッドについて By Taka |
12505 | 00/08/01 13:55:16 | RE(2):PB6.5: マルチスレッドについて By hasada |
12500 | 00/08/01 12:36:21 | RE(1):PB6.5: マルチスレッドについて By Taka |
12475 | 00/07/31 10:41:47 | PB6.5: マルチスレッドについて By hasada |
カテゴリ:PowerBuilderの不具合?
日付:2000年08月01日 12:36 発信者:Taka
題名:RE(1):PB6.5: マルチスレッドについて
hasadaさん、こんにちは。
>PB6.5でマルチスレッドを利用してORACLEのDBMS_ALERTを待機するサービスをつくったのですが
いやはや、なんとも高度な事をやっていますね。(^^;
面白そうなのでちょっと参加させていただきます。
ここで言っている「マルチスレッド」って、恐らく「SharedObject」の事ですよね。
(という前提で話します。はずしてたら流してください)
>アプリケーションを終了させたときにほぼ必ずアプリケーションエラーが発生して異常終了してしまいます。
いくつかの原因が考えられるとおもいますが、アプリケーションが終了する時、つまりメインスレッドが
終了する際には、きちんとSharedObjectも停止させなければなりません。ここは問題ないですか?
それ以前に、DBMS_ALERTを待機中ということは、SharedObject中のORACLEセッションがビジー状態だと
思うのですが、この状態でスレッドを終了させてしまうと問題あるのではないでしょうか。
この点もきちんと回避させるような仕組みになっていますか?
(SharedObject側がビジーの場合は、メインスレッドを停止できないようにフラグ等で制御している...とか)
>アプリケーションを終了してもスレッドがまだ残っているためなのではないかと思い、マルチスレッドユーザ
>オブジェクトのdestructorイベントでスレッドを強制的に殺すようにスクリプトを記述して再度実行して
>みたのですがやはり同じでした。
この表現がわからないのですが、自分のスレッドを自分のdestructorイベントで殺しているという事ですか???
基本的には、そのスレッドを生成したオブジェクトが責任を持って殺すようにすべきです。
まずは、どこに問題があるかを見極めましょう。
・スレッドを生成/破棄しているタイミングに問題ないか
・DBMS_ALERTを使わなければ問題ないか
・スレッド間で会話している場合、パラメータの受け渡しや実行順序は正しいか
などです。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS (記載なし)
Browser InternetExplorer4.X
Server SoftWare
OS Windows NT 4.0
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.