28.3.1.1 锁定服务 C 接口

本节介绍如何使用锁定服务 C 语言接口。要改为使用 UDF 接口,请参阅第 28.3.1.2 节“锁定服务 UDF 接口”。有关锁定服务接口的一般 Feature,请参见第 28.3.1 节“锁定服务”。有关插件服务的一般信息,请参见第 28.3 节“用于插件的 MySQL 服务”

使用锁定服务的源文件应包括以下头文件:

#include <mysql/service_locking.h>

要获取一个或多个锁,请调用此函数:

int mysql_acquire_locking_service_locks(MYSQL_THD opaque_thd,
                                        const char* lock_namespace,
                                        const char**lock_names,
                                        size_t lock_num,
                                        enum enum_locking_service_lock_type lock_type,
                                        unsigned long lock_timeout);

自变量具有以下含义:

  • opaque_thd:线程句柄。如果指定为NULL,则使用当前线程的句柄。

  • lock_namespace:以空终止的字符串,指示锁定名称空间。

  • lock_names:以空终止的字符串组成的数组,提供要获取的锁的名称。

  • lock_numlock_names数组中的名称数。

  • lock_type:锁定模式,分别为LOCKING_SERVICE_READLOCKING_SERVICE_WRITE,以获取读锁定或写锁定。

  • lock_timeout:放弃之前 await 获取锁的整数秒数。

要释放为给定名称空间获取的锁,请调用此函数:

int mysql_release_locking_service_locks(MYSQL_THD opaque_thd,
                                        const char* lock_namespace);

自变量具有以下含义:

  • opaque_thd:线程句柄。如果指定为NULL,则使用当前线程的句柄。

  • lock_namespace:以空终止的字符串,指示锁定名称空间。

可以使用性能模式在 SQL 级别上监视锁定服务获取或 await 的锁定。有关详细信息,请参见第 28.3.1.2.3 节“锁定服务监视”