アプリケーションのメイン スレッドでサーバーへの接続を作成します。
ClassA::ClassA(void)
{
mpMySQL = mysql_init(NULL);
if (!mysql_thread_safe())
{
// Error;
}
}
その後、サーバーへの接続があります。
void ClassA::OpenConnection(/*inParams*/)
{
.....
mysql_real_connect(mpMySQL, /*inParams*/);
.....
}
ここで、mpMySQL を使用してクエリを実行します。
MyRes ClassA::SQLQuery(MyString inQuery)
{
...
if (!mysql_real_query(mpMySQL, inQuery, inQuery.length()))
{
...
}
}
アプリはメイン スレッドで ClassA のオブジェクトを使用しますが、すべて正常に動作します。
しかし、方法が
A->SQLQuery()
スレッドから呼び出す - 実行時にアプリケーションがクラッシュする
mysql_real_query()
======
私が理解しているように、これは mpMySQL が 1 つのスレッドで初期化され、別のスレッドで使用されたために発生します。私は正しいですか?
このトリックを行う方法はありますか?または、クエリを実行するために、分離されたすべてのスレッドで MYSQL 構造を初期化 (および個別の接続を作成) する必要がありますか?