This section describes how to use the locking service C language interface. To use the function interface instead, see Section 5.6.9.1.2, “The Locking Service Function Interface” For general characteristics of the locking service interface, see Section 5.6.9.1, “The Locking Service”. For general information about plugin services, see Section 5.6.9, “MySQL Plugin Services”.
Source files that use the locking service should include this header file:
#include <mysql/service_locking.h>
To acquire one or more locks, call this function:
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);
The arguments have these meanings:
opaque_thd
: A thread handle. If specified as NULL
, the handle for the current thread is used.
lock_namespace
: A null-terminated string that indicates the lock namespace.
lock_names
: An array of null-terminated strings that provides the names of the locks to acquire.
lock_num
: The number of names in the lock_names
array.
lock_type
: The lock mode, either LOCKING_SERVICE_READ
or LOCKING_SERVICE_WRITE
to acquire read locks or write locks, respectively.
lock_timeout
: An integer number of seconds to wait to acquire the locks before giving up.
To release locks acquired for a given namespace, call this function:
int mysql_release_locking_service_locks(MYSQL_THD opaque_thd, const char* lock_namespace);
The arguments have these meanings:
opaque_thd
: A thread handle. If specified as NULL
, the handle for the current thread is used.
lock_namespace
: A null-terminated string that indicates the lock namespace.
Locks acquired or waited for by the locking service can be monitored at the SQL level using the Performance Schema. For details, see Locking Service Monitoring.