0
我創建應用程序的主線程服務器的連接:MySQL的C類接口:執行從單獨的線程查詢
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中的主體對象d - 一切正常。
但是,如果方法
A->SQLQuery()
從線程調用 - 在執行應用程序崩潰
mysql_real_query()
======
據我瞭解這種情況是因爲mpMySQL在一個線程中初始化,並在另一個線程中使用。我對嗎?
是否要這樣做?或者我應該在每個分離的線程中初始化MYSQL結構(並建立單獨的連接)來執行查詢?