我应该使用哪个链接来获取mysqlclient库?它们之间有什么区别?我似乎找不到答案。谢谢。
MySQL客户端的新版本不再包含"_r"版本。有些版本可能会从libmysqlclient_r.a链接到libmysqlclient.a。
libmysqlclient_r.a是线程安全的
libmyqslclient.a
是否有难以保护的内部全局状态,没有正确保护互斥锁?还是仅仅不允许您同时从多个线程使用相同的数据库连接对象?这是一个巨大的区别。如果是前者,则所有库代码都必须使用 _r
版本,以避免与可能被调用方使用或未使用的其他库发生冲突。如果是后者,只有想要从多个线程访问相同数据库连接的程序需要使用 _r
版本。 - R.. GitHub STOP HELPING ICElibmysqlclient_r.a是"可重入的"。https://en.wikipedia.org/wiki/Reentrant_%28subroutine%29 但正如Garret所指出的,新版本中没有区别(两者都是可重入的)。
每个连接都保证libmysqlclient_r是线程安全的。然而,MySQL 5.5之前的文档对于多线程应用程序是否可以链接到libmysqlclient并不清楚,只要在单个MySQL连接句柄上没有同时访问即可。
基于经验,我使用libmysqlclient处理每秒100-400个查询且已运行5年的应用程序,但仍未遇到任何问题。