Provided by: tcl8.4-doc_8.4.20-7_all bug

NAME

       vwait - Process events until a variable is written

SYNOPSIS

       vwait varName
_________________________________________________________________

DESCRIPTION

       This  command  enters  the  Tcl  event  loop to process events, blocking the application if no events are
       ready.  It continues processing events until some event handler sets the value of variable varName.  Once
       varName has been set, the vwait command will return as soon as the event handler  that  modified  varName
       completes.   varName must globally scoped (either with a call to global for the varName, or with the full
       namespace path specification).

       In some cases the vwait command may not return immediately after varName is set.  This can happen if  the
       event  handler  that  sets  varName does not complete immediately.  For example, if an event handler sets
       varName and then itself calls vwait to wait for a different variable, then it may not return for  a  long
       time.   During  this time the top-level vwait is blocked waiting for the event handler to complete, so it
       cannot return either.

EXAMPLES

       Run the event-loop continually until some event calls exit.  (You can  use  any  variable  not  mentioned
       elsewhere, but the name forever reminds you at a glance of the intent.)
              vwait forever

       Wait  five  seconds  for a connection to a server socket, otherwise close the socket and continue running
       the script:
              # 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!"
                 }
              }

SEE ALSO

       global(3tcl), update(3tcl)

KEYWORDS

       event, variable, wait

Tcl                                                    8.0                                           vwait(3tcl)