我在应用程序的主线程中创建与服务器的连接:
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 在一个线程中初始化并在另一个线程中使用。我对吗?
有办法做到这一点吗?或者我应该在每个单独的线程(并建立单独的连接)中初始化 MYSQL 结构以执行查询?