您的位置:首页 > 大数据 > 人工智能

tcl/tk参考——控制结构vwait

2008-03-22 19:31 405 查看
.

.

名称

vwait - 一直等待直到一个变量被修改为止

语法

vwait varName

描述

这个命令进入Tcl事件循环,Tcl将会一直处理事件直到变量varName被修改为止,一旦varName被修改了,vwait命令将会立刻返回,varName必须是一个全局范围变量。(要么是一个全局变量,要么带有完全的名字空间路径)。

在一些情况下在varName被修改后vwait命令可能不会立刻返回,如果设置varName的事件句柄没有完成,那么vwait命令就不会立刻返回。例如,如果一个事件句柄设置varName,然后它自己调用vwait去等待一个不同的变量,这样的话有可能需要经过长时间后才能返回。在这种情况下最高堆栈层的vwait命令阻塞,等待事件句柄完成,所以不能返回。

示例

运行事件循环直到一些事件调用exit

vwait forever

在连接一个服务器套接字时等待5秒钟,否则关闭套接字继续运行脚本。

# Initialise the state

after 5000 set state timeout

set server [socket -server accept 12345]

proc accept {args} {

global state connectionInfo

set state accepted

set connectionInfo $args

}

# Wait for something to happen

vwait state

# Clean up events that could have happened

close $server

after cancel set state timeout

# Do something based on how the vwait finished...

switch $state {

timeout {

puts "no connection on port 12345"

}

accepted {

puts "connection: $connectionInfo"

puts [lindex $connectionInfo 0] "Hello there!"

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: