Saltar al contenido principal

Mover atómicamente un elemento de cola (LCC.kvdb.queue.move)

Declaración​

value, err = LCC.kvdb.queue.move(from_name, pop?, to_name, push?, timeout?)

Parámetros​

  • from_name
    Tipo string; nombre de la cola de origen (no vacío, máximo 256 bytes)
  • pop
    Tipo string, opcional; dirección de extracción de la cola de origen, "front" o "back", predeterminada "front"
  • to_name
    Tipo string; nombre de la cola de destino (no vacío, máximo 256 bytes)
  • push
    Tipo string, opcional; dirección de inserción de la cola de destino, "front" o "back", predeterminada "back"
  • timeout
    Tipo numérico, opcional; tiempo de espera de la solicitud (segundos), predeterminado 60

Valores devueltos​

  • value
    Tipo string; elemento movido; nil cuando la cola de origen está vacía
  • err
    Tipo string o nil; si falla o la cola de origen está vacía, devuelve 'not found'

Descripción​

Extrae atómicamente un elemento de la cola de origen y lo inserta en la cola de destino.
Es adecuado para implementar la transferencia de tareas con toma de posesión y evitar condiciones de carrera.
Si la cola de origen está vacía, devuelve nil, 'not found'.

Ejemplo​

local value, err = LCC.kvdb.queue.move("待处理", "front", "进行中", "back")
if value then
print("领取任务:", value)
end