在一个长时间运行的多线程C程序中,连接到MariaDB/MySQL服务器的正确方法是什么?

j91ykkif  于 2022-11-08  发布在  Mysql
关注(0)|答案(1)|浏览(92)

在阅读了文档后,我仍然不清楚正确的用法是什么。是否应该:
1.在启动时、创建线程之前调用一次mysql_init()mysql_real_connect(),所有线程共享从mysql_real_connect()返回的MYSQL句柄。
1.在启动时,在创建线程之前调用一次mysql_init(),然后每个线程调用mysql_real_connect()以获取线程特定的MYSQL句柄。
1.每个线程调用mysql_init()mysql_real_connect()
1.还有别的事吗?

nbysray5

nbysray51#

1.在多个线程上共享一个连接不是一个好主意,因为您必须处理应用程序中的各种问题:事务安全、协议缓冲区等

  1. mysql_init() API函数初始化连接句柄(MYSQL),该句柄将用于通过mysql_real_connect()连接到服务器。再次尝试使用同一句柄进行连接将导致错误(CR_ALREADY_CONNECTED=2058)。
    1.每个线程使用一个连接是更好的解决方案。如果线程不总是使用连接,则使用连接池(例如,通过使用Connector/C++)。

相关问题