从 运行 停止 tcl 过程比每 2 分钟一次更规律,不管它被调用的频率如何

stop tcl procedure from running more regularly than once every 2 minutes, regardless of how often it is called

我有一段代码有一个过程,我只想让这个过程触发一次,最多每2分钟一次。如果它在最后 2 分钟内触发,那么它应该退出。目前它在执行之前有一个小的延迟(在 5000 之后),但这似乎也是如此,将在停顿时间(5 秒)内发生的任何其他执行请求排队然后在一连串 activity.

中敲出排队的命令

显然这缺少了很大一部分,但是
我考虑过用变量做一些事情,比如:

#gets current time since epoch as var0
set timer0 clock format [clock seconds] -format %s
#gets current time since epoch as var1
set timer1 clock format [clock seconds] -format %s
#calculates elapsed time since epoch in seconds, converts seconds to minutes
set split [ expr (($timer0 - $timer1)/60)/60 ]
if { $split > 2 } {
    my_proc $maybe_1var $maybe_2vars $maybe_3vars  
} else {  
    exit super gracefully  
}  

如果您愿意,我可以提供我当前代码的片段。它远没有我想象的那么优雅,而且我不确定在 Tcl 中是否有更好的方法来做到这一点。

一种可能的解决方案:

set lastExecuted ""

proc foo {} {
    global lastExecuted
    set currentTimestamp [clock scan seconds]
    if {$lastExecuted != "" && ($currentTimestamp - $lastExecuted) > 120} {
        exit
    }
    set lastExecuted $currentTimestamp
    # continue execution
}