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日 13:55 発信者:hasada
題名:RE(2):PB6.5: マルチスレッドについて
Takaさん、こんにちは。
いろいろとご指摘いただきありがとうございます。
>ここで言っている「マルチスレッド」って、恐らく「SharedObject」の事ですよね。
そうです。説明がたりなくてすいません。
共有オブジェクトを使用して別スレッドでDBMS_ALERTを待つようにしています。
>いくつかの原因が考えられるとおもいますが、アプリケーションが終了する時、つまりメインスレッドが
>終了する際には、きちんとSharedObjectも停止させなければなりません。ここは問題ないですか?
>
>それ以前に、DBMS_ALERTを待機中ということは、SharedObject中のORACLEセッションがビジー状態だと
>思うのですが、この状態でスレッドを終了させてしまうと問題あるのではないでしょうか。
>この点もきちんと回避させるような仕組みになっていますか?
>(SharedObject側がビジーの場合は、メインスレッドを停止できないようにフラグ等で制御している...とか)
>
>>アプリケーションを終了してもスレッドがまだ残っているためなのではないかと思い、マルチスレッドユーザ
>>オブジェクトのdestructorイベントでスレッドを強制的に殺すようにスクリプトを記述して再度実行して
>>みたのですがやはり同じでした。
>
>この表現がわからないのですが、自分のスレッドを自分のdestructorイベントで殺しているという事ですか???
>基本的には、そのスレッドを生成したオブジェクトが責任を持って殺すようにすべきです。
>
また説明が足りなくてすいません。このあたりについては考慮しているつもりでいます。
あるウインドウが別スレッドを生成し、DBMS_ALERTの待機が必要なくなった場合(アプリケーション終了時)
に終了フラグを判断してウインドウが別スレッドを殺すという流れです。
スレッドを生成するオブジェクトのdestructorイベントでSharedObjectUnregisterするようにしています。
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.