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_num
:lock_names
数组中的名称数。 -
lock_type
:锁定模式,分别为LOCKING_SERVICE_READ
或LOCKING_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 节“锁定服务监视”。