メインコンテンツへ移動

キュー要素をアトミックに移動する (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' を返します

説明​

移動元キューから要素を 1 つ取り出して削除し、移動先キューへアトミックにプッシュします。
競合を避けながら、先取り方式でタスクを移動する実装に適しています。
移動元キューが空の場合は nil, 'not found' を返します。

例​

local value, err = LCC.kvdb.queue.move("処理待ち", "front", "処理中", "back")
if value then
print("タスクを取得:", value)
end