有效地存储和迭代Lua多级队列

时间:2016-07-01 01:18:39

标签: performance lua queue priority-queue

这是添加格式:

AddToQueue( String identifier, function callfunc, int priority )

优先级保证为0到4,0为最高优先级。我目前的设置是:

local tQueue = {
    [0] = {},
    [1] = {},
    [2] = {},
    [3] = {},
    [4] = {}
}

function AddToQueue( sName, funcCallback, iPriority )
    queue[iPriority or 0][sName] = funcCallback
end

function CallQueue()
    for i = 0, 4 do
        for _, func in pairs( queue[i] ) do
            local retval = func()

            if ( retval ~= nil ) then
                return retval
            end
        end
    end
end

这有效,但我想知道是否有更好的方法来存储和迭代这些函数,以防止每次调用都进行5对循环。谢谢!

1 个答案:

答案 0 :(得分:1)

如果频繁迭代你的队列,并且新的回调添加很少,那么你可以将所有内容存储在单个表中,每次添加新的回调时对其进行排序。