NOEMBLEM/エンブレムが設定されていません。

メールの詳細(トピック表示)

IBDatabaseでの同時接続について

投稿者:シンゴさん  2009/05/23 21:55  MLNo.192   [メール表示]

皆様、お世話になっております。
じろうです。

IBDatabase はSQLを同時発行される状況には未対応でしょうか?


現在作成中のアプリケーションにおいて、データモジュールに配置した
IBDatabase一つにて接続しており、通常時は特に問題は起こらないのですが、
自動処理を別スレッドで実行させており、スレッド動作中にフォームで操作する
と、「invalid request handle」と例外を生成されます。

フォームでの操作は、IBDatasetのOpenとClose
スレッド内では、SELECT、UPDATE、INSERTが連続で自動処理を行っております。

スレッドが動作していな状態でフォームの操作を行っても問題は無く
また、スレッド動作時になにもしなければ、正常に終了します。


やはり、このような処理の場合にはIBDatabaseを複数で接続しなければならない
のでしょうか?

よろしくお願いいたします。

Delphi7
FireBird2.1
IBX6
(IBX7.11は何故か設計時にTransactionコンポーネントをダブルクリックすると
エラーが出るので使用をやめました)


 読み込み中...

  • MLNo.193   トム猫さん  (3) 2009/05/23 23:23  [メール表示する]
    林です。

    InterBase/Firebirdのクライアントは、その接続APIである isc_attach_database()
    で返されるハンドルを利用しているわけですが、これがスレッドセーフになっていません。

    したがって、IBXでのマルチスレッド対応は必ず1スレッド毎に1接続を守るようにして下さい。

    拙作 dbBench がdbxpressでのサンプルになるかと思います。

    http://blog.tomnekosoft.com/tomnekosoft.php?itemid=2258

    ご参考まで。

    2009/05/23 21:55 シンゴ :
    > 皆様、お世話になっております。
    > じろうです。
    >
    > IBDatabase はSQLを同時発行される状況には未対応でしょうか?
    >
    >
    > 現在作成中のアプリケーションにおいて、データモジュールに配置した
    > IBDatabase一つにて接続しており、通常時は特に問題は起こらないのですが、
    > 自動処理を別スレッドで実行させており、スレッド動作中にフォームで操作する
    > と、「invalid request handle」と例外を生成されます。
    >
    > フォームでの操作は、IBDatasetのOpenとClose
    > スレッド内では、SELECT、UPDATE、INSERTが連続で自動処理を行っております。
    >
    > スレッドが動作していな状態でフォームの操作を行っても問題は無く
    > また、スレッド動作時になにもしなければ、正常に終了します。
    >
    >
    > やはり、このような処理の場合にはIBDatabaseを複数で接続しなければならない
    > のでしょうか?
    >
    > よろしくお願いいたします。
    >
    > Delphi7
    > FireBird2.1
    > IBX6
    > (IBX7.11は何故か設計時にTransactionコンポーネントをダブルクリックすると
    > エラーが出るので使用をやめました)
    >
    >
    > 【MLコミュホームページ】http://www.freeml.com/delphi-users
    >
    > --[PR]------------------------------------------------------------------
    > 〓〓〓〓〓皆さんは生命保険にどれくらいのお金をかけてますか?〓〓〓〓〓
    > 案外、商品内容をよく理解せずに多額のお金を支払っている人が多いのでは。
    > なぜ?そういことになるかと言うと"生命保険の仕組み"が複雑すぎるから。
    > ▼▽▼そんな日本の生命保険に「風穴」を開けようとする会社が登場した!!
    > http://ad.freeml.com/cgi-bin/sa.cgi?id=egLIV
    >
    > ------------------------------------------------------------------[PR]--
    > ■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp
    >
    >



    --
    『オープンソースパワーを全ての人に』
    +++++++++++++++++++++++++++++++

    アナハイムテクノロジー株式会社
    代表取締役 林 務
    Mobile:090-4171-3946
    tsutomu.hayashi@…

    〒157-0072
    東京都世田谷区祖師谷1-22-26-S-208
    TEL:03-5787-7791 FAX:03-5787-7792

    +++++++++++++++++++++++++++++++

  • MLNo.194   シンゴさん  (0) 2009/05/23 23:44  [メール表示する]
    じろうです。

    林さま。ありがとうございます。

    そういうことでしたか。

    私にしてみれば、全く原因不明のエラーでしたので、スッキリしました。

    全てのスレッドにIBDatabaseを割当ました。

    有難うございました。m(__)m



    トム猫 さん:
    > 林です。
    >
    > InterBase/Firebirdのクライアントは、その接続APIである isc_attach_
    database()
    > で返されるハンドルを利用しているわけですが、これがスレッドセーフになっ
    ていません。
    >
    > したがって、IBXでのマルチスレッド対応は必ず1スレッド毎に1接続を守るよ
    うにして下さい。
    >
    > 拙作 dbBench がdbxpressでのサンプルになるかと思います。
    >
    > http://blog.tomnekosoft.com/tomnekosoft.php?itemid=2258
    >
    > ご参考まで。
    >
    > 2009/05/23 21:55 シンゴ :
    > > 皆様、お世話になっております。
    > > じろうです。
    > >
    > > IBDatabase はSQLを同時発行される状況には未対応でしょうか?
    > >
    > >
    > > 現在作成中のアプリケーションにおいて、データモジュールに配置した
    > > IBDatabase一つにて接続しており、通常時は特に問題は起こらないのですが、
    > > 自動処理を別スレッドで実行させており、スレッド動作中にフォームで操作
    する
    > > と、「invalid request handle」と例外を生成されます。
    > >
    > > フォームでの操作は、IBDatasetのOpenとClose
    > > スレッド内では、SELECT、UPDATE、INSERTが連続で自動処理を行っておりま
    す。
    > >
    > > スレッドが動作していな状態でフォームの操作を行っても問題は無く
    > > また、スレッド動作時になにもしなければ、正常に終了します。
    > >
    > >
    > > やはり、このような処理の場合にはIBDatabaseを複数で接続しなければなら
    ない
    > > のでしょうか?
    > >
    > > よろしくお願いいたします。
    > >
    > > Delphi7
    > > FireBird2.1
    > > IBX6
    > > (IBX7.11は何故か設計時にTransactionコンポーネントをダブルクリックす
    ると
    > > エラーが出るので使用をやめました)
    > >
    > >
    > > 【MLコミュホームページ】http://www.freeml.com/delphi-users
    > >
    > > --[PR]--------------------------------------------------------------
    ----
    > > 〓〓〓〓〓皆さんは生命保険にどれくらいのお金をかけてますか?〓〓〓〓

    > > 案外、商品内容をよく理解せずに多額のお金を支払っている人が多いのでは。
    > > なぜ?そういことになるかと言うと"生命保険の仕組み"が複雑すぎるから。
    > > ▼▽▼そんな日本の生命保険に「風穴」を開けようとする会社が登場した!!
    > > http://ad.freeml.com/cgi-bin/sa.cgi?id=egLIV
    > >
    > > ------------------------------------------------------------------
    [PR]--
    > > ■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp
    > >
    > >
    >
    >
    >
    > --
    > 『オープンソースパワーを全ての人に』
    > +++++++++++++++++++++++++++++++
    >
    > アナハイムテクノロジー株式会社
    > 代表取締役 林 務
    > Mobile:090-4171-3946
    > tsutomu.hayashi@…
    >
    > 〒157-0072
    > 東京都世田谷区祖師谷1-22-26-S-208
    > TEL:03-5787-7791 FAX:03-5787-7792
    >
    > +++++++++++++++++++++++++++++++
    >
    >
    > 【MLコミュホームページ】http://www.freeml.com/delphi-users
    >
    > --[PR]----------------------------------------------------------------
    --
    > ◇◆◇◆ 憧れの4LDKや共用施設充実マンション    ◇◆◇◆
    > ◆◇◆◇賃貸じゃ難しい?理想の住まい探しは早めの資料請求で先手!◆◇◆◇
    > ◇◆◇◆  これから販売予定のおNewなマンション、即チェック ◇◆◇◆
    > http://ad.freeml.com/cgi-bin/sa.cgi?id=egP0N
    >
    > ------------------------------------------------------------------[PR]
    --
    > ■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp
    >


メールへの返信はMLのメンバーしかできません。

更新順メールリスト

これが憧れの4LDK超/SUUMO