首先,这是对我之前的问题的跟进。
我想在 Tcl 中使用线程,但与 Itcl 合作。
这是一个示例:
package require Itcl
package require Thread
::itcl::class ThreadTest {
variable thread [thread::create {thread::wait}]
variable isRunning 0
method start {} {
set isRunning 1
thread::send $thread {
proc loop {} {
puts "thread running"
if { $isRunning } {
after 1000 loop
}
}
loop
}
}
method stop {} {
set isRunning 0
}
}
set t [ThreadTest \#auto]
$t start
vwait forever
但是,当条件语句尝试执行并检查isRunning
变量是否为真时,我得到一个 no such variable 错误。我知道这是因为 proc 只能访问全局范围。但是,在这种情况下,我想包含该类的本地变量。
有没有办法做到这一点?