【发布时间】:2021-03-10 17:22:05
【问题描述】:
Tcl 有信号量之类的东西吗?我需要防止重新进入某个程序。这样的事情在大多数情况下都会起作用:
set inside_A 0
proc A {} {
global inside_A
if { $inside_A } {
return "Ouch!"
}
incr inside_A
...
incr inside_A -1
}
但是,这是不可靠的,因为块检查和增量不是原子的。 Tcl 是否有类似信号量的东西来可靠地防止重入?
【问题讨论】:
-
您是否试图阻止函数的递归调用?还是只能调用一次?
-
@Shawn,这个函数是从 GUI 间接调用的,并且足够快的点击序列被同时调用,根据应用程序逻辑它当然不应该这样做。我无法控制点击次数;我唯一的办法就是拒绝重新进入。
标签: concurrency tcl semaphore