2.9.2 マルチスレッドに対応しない関数の実行
マルチスレッド環境で,dc_clt_cltin_s関数を実行したスレッドとは別のスレッドでdc_rpc_call_s関数を実行した場合,正常に動作しないことがあります。
マルチスレッド環境に対応しない関数の実行を,次の図に示します。
マルチスレッド環境に対応するためには,次の点に注意して関数を実行してください。
-
それぞれのスレッドで,必ずdc_clt_cltin_s関数を実行し,クライアントIDと呼ばれるディスクリプタを受け取る必要があります。各スレッドで実行するすべての関数には,dc_clt_cltin_s関数で受け取ったクライアントIDを指定してください。
任意のプロセスまたはスレッドがユーザ認証を実行して取得したクライアントIDは,ほかのプロセスまたはスレッドでは使用できません。
-
マルチスレッド環境でRPCを同時に実行する場合は,各スレッドでdc_clt_cltin_s関数から実行する必要があります。
TP1/Client提供関数のクライアントID引数には,同じスレッドのdc_clt_cltin_s関数が返したクライアントIDを指定してください。クライアントIDは,スレッドをわたって使用できません。