MariaDB非阻塞API(翻译官方文档)

从 MySQL fork 出来的 MariaDB 提供了异步的 C/C++ MySQL client 接口,下面是我的一些总结

1.my_socket mysql_get_socket(const MYSQL *mysql)

  • 作用:

返回用于连接的套接字的描述符

2.unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql)

  • 注意:

仅当_start() or _cont()函数返回MYSQL_WAIT_TIMEOUT设置了标志的值时才应调用此方法

  • 作用

在这种情况下,它返回值(以秒为单位),在超时发生后,应用程序应调用适当的_cont()函数MYSQL_WAIT_TIMEOUT作为发生的事件传递 。这用于处理连接和读取超时。

3.unsigned int STDCALL mysql_get_timeout_value_ms(const MYSQL *mysql)

  • 注意事项:

①此功能从MariaDB 5.5.28和MariaDB 10.0.0开始可用。
②与 mysql_get_timeout_value() 一样,只有在 _start() 或 _cont() 函数返回一个设置了 MYSQL_WAIT_TIMEOUT 标志的值时才应该调用它。在这种情况下,它返回值(以毫秒为单位),之后发生超时,应用程序应调用适当的 _cont() 函数,将 MYSQL_WAIT_TIMEOUT 作为发生的事件传递。
③与 mysql_get_timeout_value() 的不同之处在于它为超时提供毫秒分辨率,而不仅仅是整秒。在MariaDB 10.0 中,内部超时现在可以以毫秒为单位,而在 5.5 及以下版本中仅为整秒。
MariaDB 5.5(从 5.5.28 起)也提供了这个毫秒版本,以使应用程序更容易使用任一库版本。但是,在 5.5 中,它总是返回 1000 毫秒的倍数。

  • 作用:

与mysql_get_timeout_value类似,返回超时时间,但是单位根据mariadb版本的不同而不同

4.int mysql_real_connect_start ( MYSQL ** ret , MYSQL * mysql , const char * host , const char * user , const char * passwd , const char * db , unsigned int port , const char * unix_socket , unsigned long client_flags )

  • 作用:

mysql_real_connect_start() 向服务器发起非阻塞连接请求。

5.int mysql_real_connect_cont ( MYSQL ** ret , MYSQL * mysql , int ready_status )

  • 作用:

当mysql_real_connect_start()或mysql_real_connect_cont()返回零时,传递的“ mysql”参数的副本存储在*ret.

6.mysql_options(&mysql, MYSQL_OPTION_NONBLOCK, 0)

  • 作用:

在使用任意一个非阻塞操作之前,有必要通过设置 MYSQL_OPT_NONBLOCK选项来启用非阻塞功能:

  • 注意:

这个调用可以在任何时候调用,不过典型情况下是在最开始的时候完成,也就是在 mysql_real_connect() 之前。不过这依然可以在任何开始使用非阻塞操作的时候调用。如果在没有使用 MYSQL_OPT_NONBLOCK 的情况下尝试任何非阻塞操作,应用程序一般情况下会因为空指针异常崩溃。

  • 参数:

MYSQL_OPTION_NONBLOCK的参数是正在等待 I/O、并且应用程序正在做其他操作时用于保存非阻塞操作的状态(state)的栈大小。正常情况下,应用程序不需要修改这个值,可以传入 0 以使用默认值。

猜你喜欢

转载自blog.csdn.net/weixin_43679037/article/details/120721007