The mi_lock_memory() function

The mi_lock_memory() function locks and waits for a named-memory mutex specified by name and duration.

Syntax

mi_integer mi_lock_memory(mem_name, duration)
   mi_string *mem_name;
   MI_MEMORY_DURATION duration;
mem_name
The null-terminated name of the named-memory block to lock.
duration
A value that specifies the memory duration of the named-memory block to lock. Valid values for duration are:
PER_ROUTINE
For the duration of one iteration of the UDR
PER_COMMAND
For the duration of the execution of the current subquery
PER_STATEMENT (Deprecated)
For the duration of the current SQL statement
PER_STMT_EXEC
For the duration of the execution of the current SQL statement
PER_STMT_PREP
For the duration of the current prepared SQL statement
PER_TRANSACTION
For the duration of one transaction
PER_SESSION
For the duration of the current client session
PER_SYSTEM
For the duration of the database server execution
Valid in client LIBMI application? Valid in user-defined routine?
No Yes
Important: This advanced function can adversely affect your UDR if you use the function incorrectly. Use it only when no regular DataBlade API function can perform the task you need done.

Usage

The mi_lock_memory() function requests a lock on the named-memory block based on its memory duration of duration and its name, which mem_name references. The function waits until this lock has been obtained before it returns control to its calling function.
Important: After you obtain a lock on a named-memory block, release it as soon as possible. You must explicitly release a named-memory lock with the mi_lock_memory() function.

Return values

MI_OK
The function successfully locked the specified named-memory block.
MI_NO_SUCH_NAME
The requested named-memory block does not exist for the specified duration.
MI_POTENTIAL_DEADLOCK
The acquisition of a lock on the specified named-memory block failed because it can result in deadlock.
MI_ERROR
The function was not successful.

Copyright© 2019 HCL Technologies Limited