2012-04-13 6 views
0

libmysqlclient_r.so、つまりc mysqlコネクタを使用しています。 現在のアーチごとに、connection1準備されたstmtのスレッド1が作成され、キャッシュされます。 次のスレッド2接続2キャッシュされたstmtが再利用されます。用意されたステートメントはスレッド間で共有できますか?

実行後、プログラムはランダムな位置でセグメント化エラーをスローします。

注:スレッドを1つだけ保持して実行すると、セグメンテーション違反が発生することはありません。

私は下に与えられたとして、私は必要なすべてのステップに従っていても、それについてのMySQLのドキュメントに何かを見つけることができませんしませんでした: http://dev.mysql.com/doc/refman/4.1/en/threaded-clients.html

スレッド間で準備STMTSの共有が問題であれば提案してください?

+0

」を提案してください...プロトタイプの機能は、入力パラメータとして接続を必要とするので、あなたはconnection_Bでconnection_Aの文脈の中で調製プリペアドステートメントを再利用することはできませんか? ? " - いいえ。コードを追加してもらえますか?コードを転記する前に – user928204

+0

と答えてください。あなたの答えは「いいえ」と説明してください。上記のシナリオを検討してください - それは実行可能だと思いますか? – user1145280

答えて

1

AFAIKの準備文は、接続コンテキストで作成/関連付けられます。スレッドは問題がある間での共有がSTMTSを準備している場合

MYSQL_STMT *mysql_stmt_init(MYSQL *mysql) 
+0

お返事ありがとうございます、このシナリオで利用可能な公式文書はありますか? – user1145280

+1

@ user1145280:関数プロトタイプだけでこのことが分かります。他のデータベースも同じように機能します。最終的なガイドはmysqlクライアントAPIドキュメントです。 – Malkocoglu

+0

もっと興味深いのは、「スレッド間で接続コンテキストを使用できるか」です。答えは「はい」ですが、一度に1つのスレッドしか使用できません。 –

関連する問題