본문으로 건너뛰기

원자적 큐 요소 이동 (LCC.kvdb.queue.move)

선언​

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

매개변수​

  • from_name
    문자열 형태, 소스 큐의 이름(빈 값 불가능, 최대 길이는 256 바이트)
  • pop
    문자열 형태, 선택 사항; 소스 큐에서 요소를 꺼내오는 방향으로, "front" 또는 "back"이며, 기본값은 "front"입니다.
  • to_name
    문자열 형태, 대상 큐의 이름(빈 값 불가능, 최대 길이는 256 바이트)
  • push
    문자열 형태, 선택 사항; 대상 큐에 요소를 넣는 방향으로, "front" 또는 "back"이며, 기본값은 "back"입니다.
  • timeout
    수치 형태, 선택 사항; 요청 시 초과되는 시간(초)으로, 기본값은 60입니다.

반환 값​

  • value
    문자열 형태, 이동된 요소의 내용; 소스 큐가 비어 있을 경우 nil이 반환됩니다.
  • err
    문자열 형태 또는 nil 형태로, 실패하거나 소스 큐가 비어 있을 경우 'not found'가 반환됩니다.

설명​

소스 큐에서 요소를 원자적으로 꺼내어 대상 큐에 넣는 작업을 수행합니다.
경쟁 상황을 방지하면서 선점식 작업 전달을 구현하는 데 적합합니다.
소스 큐가 비어 있을 경우 nil, 'not found'가 반환됩니다.

예시​

local value, err = LCC.kvdb.queue.move("처리 대기", "front", "진행 중", "back")
if value then
print("작업 선점:", value)
end