如何在Lua中使用定时器

我使用tshark捕获数据,并保存数据包头中的某些数据以处理它们,以便检测网络中的一些事件。我将数据保存在lua程序中的一个表中(该程序在cmd中使用命令(-Xlua_script:)运行),现在我想在捕获运行时单独处理每分钟的数据。这是一种在线处理。首先,任何人知道这是否可以实现?其次,我需要一个计时器,我不知道该如何做,我希望有一种方法可以获取表中的数据进行处理,重置表以获取下一分钟的新数据而不会丢失任何数据。有什么建议或想法吗?

原文链接 https://stackoverflow.com/questions/9393693

点赞
stackoverflow用户1208078
stackoverflow用户1208078

在 Lua 中没有像其他编程语言一样概念的“定时器”,可以创建一个并设置事件处理程序,当定时器触发时,主程序会收到通知……不过,您可以定期检查 os.clock() 函数以确定自上次处理以来经过了多长时间。如果一分钟已经过去,请继续处理数据。

下面是一个可能符合您需求的代码示例:

lastTimeProcessed = os.clock()

function IsTimeToProcess(currentTime)
    span = currentTime - lastTimeProcessed
    if span >= 60 then
        lastTimeProcessed = currentTime
        return true
    end

    return false
end

while true do
    if IsTimeToProcess(os.clock()) then
        -- 在这里处理一些数据
    end
    -- 否则做您正在处理的其他事情
end
2012-02-22 15:02:38