首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >my_thread_global_end线程没有退出,是错误吗?

my_thread_global_end线程没有退出,是错误吗?
EN

Stack Overflow用户
提问于 2010-01-15 12:37:16
回答 4查看 15.5K关注 0票数 5

我使用的是MySQL c++连接器(1.0.5),最近我将get_driver_instance()和connect()方法移动到二级线程,然后得到以下错误。

My_thread_global_end()中的错误:1个线程没有退出

在googling之后,我发现mysql线程没有退出。在c++包装器中是否有一种方法可以进行清理?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-18 13:35:35

在googling之后,我了解到结束()将解决这个问题。无论我如何链接libmysqlclient.a,其中包括mysql.h文件,并在退出辅助线程之前调用mysql_thread_end,现在这个问题已经解决了。

票数 9
EN

Stack Overflow用户

发布于 2015-06-16 23:54:33

如果在线程中使用MySQL连接器/C++,则必须将mysql封装在sql::Driver::threadInit()sql::Driver::threadEnd()中。

我发现了另一个类似的问题,这里

在线程中使用连接器的任何其他功能之前,可以编写如下内容

代码语言:javascript
复制
sql::Driver *driver = get_driver_instance(); // should be synchronized
driver->threadInit();

在线程停止之前,但是在完成所有其他mysql内容之后,您可以编写一些类似于

代码语言:javascript
复制
driver->threadEnd();

get_driver_instance()似乎也不是线程安全的。如果不同步,有时会出现分段错误。在我的例子中,我有一个分割错误,而初始化在大约两个测试之一。因为我正在同步对get_driver_instance()的调用,所以我现在没有分段错误。

票数 4
EN

Stack Overflow用户

发布于 2014-09-09 07:23:53

当使用C++/连接器时,执行等效的操作:

代码语言:javascript
复制
sql::Driver* driver = get_driver_instance();
  :
  :

driver->threadEnd();  // must be done or sql thread leaks on app exit with: 
                      // Error in my_thread_global_end(): 1 threads didn't exit
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2071449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档