如何在Lua中使用计时器

时间:2012-02-22 11:13:45

标签: lua tshark

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

1 个答案:

答案 0 :(得分:1)

在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
        -- process some data here
    end
    -- otherwise do another round of whatever you're doing
end