我在应用程序的主线程中创建了与服务器的连接:
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结构(并建立单独的连接)来执行查询?