13.07.2015 Views

Caché での C++ の使用法

Caché での C++ の使用法

Caché での C++ の使用法

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Light <strong>C++</strong> バインディング各 スレッドでは、 独 立 したデータベース 接 続 (d_connection オブジェクトおよび LC_Database オブジェクトの 両 方 を 含 む)を 使 用 する 必 要 があります。LC_Database のメンバ 関 数 または LC_Database インスタンスに 接 続 したプロジェクション・オブジェクトのメンバ 関 数 を、LC_Database オブジェクトを 作 成 したスレッドとは 異 なるスレッドで 呼 び 出 すと、"Databaseconnection may not be shared by multiple threads" という 例 外 がスローされます。マルチスレッド 化 された LCB コードの 例 は、\Dev\cpp\samples にある mttest.cpp および qtest.cpp のサンプル・プログラムを 参 照 してください (ご 使 用 のシステムの の 場 所 については、"<strong>Caché</strong> インストール・ガイド" の "<strong>Caché</strong> の 既 定 のインストール・ディレクトリ" を 参 照 してください)。5.3.2 接 続 および 複 数 のスレッドプロジェクション・オブジェクトは 一 度 に 1 つのデータベース 接 続 にしか 接 続 できず、そのデータベース 接 続 が 作 成 されたスレッド 内 <strong>での</strong>み 使 用 可 能 です。1 つのプロジェクション・オブジェクトを 複 数 のスレッドで 使 用 するには、プロジェクション・オブジェクト・メソッドの disconnect() および connect() を 使 用 します。 接 続 の 状 態 を 判 断 するには、is_connected() メソッドを 使 用 します。• プロジェクション・オブジェクトは、create_new() または openid() によって 返 された 場 合 のみ 接 続 されます。• プロジェクション・オブジェクトの 接 続 を 切 断 するには、その 前 にプロジェクション・オブジェクトのアタッチを 解 除 する必 要 があります ("LCB オブジェクトのアタッチと 解 除 " を 参 照 してください)。 接 続 を 切 断 しないと、 別 のデータベース 接 続 に ( 再 ) 接 続 することはできません。• connect() および disconnect() を 使 用 すると、1 つのスレッドをプロジェクション・オブジェクトのファクトリにでき、このオブジェクトが 異 なるスレッドでデータベースに 挿 入 されます。• データベースにアクセスするプロジェクション・オブジェクトのメンバ 関 数 ではスレッドの 親 和 性 が 指 定 されますが、get() および set() 関 数 では 指 定 されないため、スレッドセーフにはなりません。• 独 立 したデータベース 接 続 は、 異 なるスレッドで 並 行 して 使 用 できます。5.3.3 LCB オブジェクトのアタッチと 解 除<strong>C++</strong> オブジェクトには、データのメモリ 内 にのみ 存 在 するコピーが 含 まれているため、<strong>Caché</strong> オブジェクト・サーバと 永 続データベースが 接 続 されていなくても、<strong>C++</strong> アプリケーションはそれらのオブジェクトを 使 用 して 処 理 を 継 続 できます。これは、2 つ 以 上 のスレッドでオブジェクトを 共 有 するマルチスレッド・アプリケーションにおいて 特 に 重 要 です。オブジェクトは 以 下 の 場 合 にアタッチされます。• openid() から 返 されたか、オブジェクトが 作 成 されて save() または insert() が 呼 び 出 された 場 合オブジェクトは 以 下 の 場 合 にアタッチを 解 除 されます。• create_new() から 返 された 場 合• delete_object() の 呼 び 出 しによって 削 除 された 場 合• detach() が 呼 び 出 された 場 合5.3.4 トランザクションおよびマルチスレッド各 スレッド/データベース 接 続 には、 独 自 のトランザクション・コンテキストがあります。• <strong>Caché</strong> には、 各 スレッドが 独 立 したプロセスのように 見 えます。2 つのスレッドで 同 じ 接 続 オブジェクトを 使 用 することはできません。• あるスレッドによって 取 得 されたロックがあり、 別 のスレッドで 同 じロックを 取 得 しようとすると、そのロックによって 試 行がブロックされます。38 <strong>Caché</strong> <strong>での</strong> <strong>C++</strong> の 使 用 法

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!