MySQL C API:从不同线程运行查询时出现分段错误 我有一个C++程序,启动MySQL数据库,然后用线程加载GUI,一次访问数据库。
当我从主线程调用MySQL C API:从不同线程运行查询时出现分段错误 我有一个C++程序,启动MySQL数据库,然后用线程加载GUI,一次访问数据库。,c++,mysql,c,multithreading,C++,Mysql,C,Multithreading,当我从主线程调用mysql\u query()函数时,它工作得很好,但当我从新线程调用它时,它会因分段错误而崩溃 此代码工作正常(在主线程中调用MySQL函数): 此代码崩溃(MySQL函数在不同线程中调用): 有什么想法吗?好的,我有一个答案,我认为把它贴在这里很重要,这样其他人就不会像我那样花一整天的时间在上面了 当您启动一个访问MySQL C API的新线程时,只需在线程内调用API函数MySQL\u thread\u init()。这将解决分段故障问题: void MainWindow:
mysql\u query()
函数时,它工作得很好,但当我从新线程调用它时,它会因分段错误而崩溃
此代码工作正常(在主线程中调用MySQL函数):
此代码崩溃(MySQL函数在不同线程中调用):
有什么想法吗?好的,我有一个答案,我认为把它贴在这里很重要,这样其他人就不会像我那样花一整天的时间在上面了 当您启动一个访问MySQL C API的新线程时,只需在线程内调用API函数
MySQL\u thread\u init()
。这将解决分段故障问题:
void MainWindow::updateQueryEngines() {
mysql_thread_init();
... rest of the code...
}
现在我可以在新线程中调用此函数,而不会出现分段错误:
std::thread *my_thread = new std::thread(&MainWindow::updateQueryEngines, this);
如果init函数附带相应的“destroy”或“free”函数,则应在该函数末尾调用它。。
void MainWindow::updateQueryEngines() {
mysql_thread_init();
... rest of the code...
}
std::thread *my_thread = new std::thread(&MainWindow::updateQueryEngines, this);