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