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

Van*_*yen 7 c c++ mysql libmysql

我应该使用哪个链接mysqlclient库?他们之间有什么区别?我似乎无法找到答案.谢谢.

小智 9

较新版本的MySQL客户端发行版不包含"_r"版本.有些可能具有从libmyqslclient_r.a到libmyqslclient.a的符号链接


Osw*_*ald 5

libmysqlclient_r.a是线程安全的

  • 这个答案是不完整的.`libmyqslclient.a`是否有令人讨厌的内部全局状态,这些状态没有被互斥锁正确保护?或者它是否只允许您从多个线程同时使用相同的数据库连接对象?这是一个巨大的差异.如果它是前者,**任何**库代码**必须**使用`_r`版本以避免与调用者可能使用或可能不使用的其他库冲突.如果是后者,只有想要从多个线程访问相同数据库连接的程序才需要使用`_r`版本. (7认同)

sep*_*332 5

libmysqlclient_r.a是“可重入的”。https://zh.wikipedia.org/wiki/Reentrant_%28subroutine%29 但正如Garret所指出的,较新版本(两者都是可重入的)没有区别。