1

OpenMP を使用して並列化された c++ の for ループがあります。ループでは、SQL Server データベースにアクセスしています。スレッド間で同じ ODBC ドライバーを共有すると、データ アクセスが並列に行われないと言われました。反復ごとに異なるドライバーを定義すると、時間がかかります。(?) 異なるスレッドが同じデータに安全に並行してアクセスする方法はありますか?

PS: データベースに書き込むのではなく、読み取るだけです。

4

1 に答える 1

0

スレッド間で同じ ODBC ドライバーを共有すると、データ アクセスが並列に行われないと言われました。

これを正確に伝えたと確信していますか?

マルチスレッドには多くの問題がありますが、ほとんどの ODBC ドライバーでは、スレッドごとの接続モデルを使用して並列読み取りを行うことができます。したがって、スレッドを開始するたびに接続します(スレッドがシャットダウンされると閉じます)。より良いパターンは、接続プールの使用です。

于 2012-05-17T09:33:18.900 に答える