libmysqlclient.a和libmysqlclient_r.a有什么区别?

8
我应该使用哪个链接来获取mysqlclient库?它们之间有什么区别?我似乎找不到答案。谢谢。
4个回答

11

MySQL客户端的新版本不再包含"_r"版本。有些版本可能会从libmysqlclient_r.a链接到libmysqlclient.a。


1
已确认的MySQL版本为14.14分发版5.5.44。 - Jichao
“libmysqlclient客户端库现在已构建为线程安全库。 libmysqlclient_r客户端库仍然存在以保持兼容性,但只是指向libmysqlclient的符号链接。”,请参阅MySQL 5.5更新日志 - huch

6

libmysqlclient_r.a是线程安全的


7
这个回答是不完整的。libmyqslclient.a 是否有难以保护的内部全局状态,没有正确保护互斥锁?还是仅仅不允许您同时从多个线程使用相同的数据库连接对象?这是一个巨大的区别。如果是前者,则所有库代码都必须使用 _r 版本,以避免与可能被调用方使用或未使用的其他库发生冲突。如果是后者,只有想要从多个线程访问相同数据库连接的程序需要使用 _r 版本。 - R.. GitHub STOP HELPING ICE

5

3

每个连接都保证libmysqlclient_r是线程安全的。然而,MySQL 5.5之前的文档对于多线程应用程序是否可以链接到libmysqlclient并不清楚,只要在单个MySQL连接句柄上没有同时访问即可。

基于经验,我使用libmysqlclient处理每秒100-400个查询且已运行5年的应用程序,但仍未遇到任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接