Difference between revisions of "Ns eval"
Jump to navigation
Jump to search
(3 intermediate revisions by 2 users not shown) | |||
Line 20: | Line 20: | ||
: '''ns_eval''' is designed to work whether you pass your script as one argument or many arguments. In order to accomplish this, the arguments are passed through: | : '''ns_eval''' is designed to work whether you pass your script as one argument or many arguments. In order to accomplish this, the arguments are passed through: | ||
− | <pre>uplevel 1 [eval concat $args]</pre> | + | <pre> uplevel 1 [eval concat $args]</pre> |
− | : which means that there are two rounds of '''concat''' behavior, unlike a straight '''eval'''. | + | : which means that there are two rounds of '''concat''' behavior, unlike a straight '''eval'''. See the example below of unsetting a global variable to see how this can play out. |
'''EXAMPLES''' | '''EXAMPLES''' | ||
Line 42: | Line 42: | ||
'''SEE ALSO''' | '''SEE ALSO''' | ||
− | : [[ns_cleanup]], [[ns_ictl]], [[ns_init]], [[ns_markfordelete]], [[ns_reinit]] | + | : [[ns_cleanup]], [[ns_ictl]], [[ns_init]], [[ns_markfordelete]], [[ns_reinit]], [[nsproxy]] |
---- | ---- | ||
− | [[Category Documentation]] - [[Category Core Tcl API]] | + | [[Category:Documentation]] - [[Category:Core Tcl API]] |
Latest revision as of 19:03, 7 February 2009
Man page: http://aolserver.com/docs/tcl/ns_eval.html
NAME
- ns_eval - Evaluate tcl in multiple interpreters
SYNOPSIS
- ns_eval ?-sync? ?-pending? ?args?
DESCRIPTION
- This command causes args to be sourced as a script in all Tcl interpreters for the current virtual server. Normally, the ns_eval is asynchronous and the script isn't immediately evaluated in the other interpreters until their next atalloc event. If the -sync option is specified, ns_eval blocks until all servers have executed the script.
- The -pending flag, which cannot be specified with any other flags or args, returns a list of the scritps still waiting to be evaluated in the various interpreters.
- NOTE: This command is currently implemented in Tcl, in the source file nsd/init.tcl.
- ns_eval is designed to work whether you pass your script as one argument or many arguments. In order to accomplish this, the arguments are passed through:
uplevel 1 [eval concat $args]
- which means that there are two rounds of concat behavior, unlike a straight eval. See the example below of unsetting a global variable to see how this can play out.
EXAMPLES
# Set a global variable accessible from all interpreters ns_eval set myGlobal 1
# Create a proc accessible from all interpreters, and wait # for it to be define in all of them before returning ns_eval -sync proc doSomething {args} { # do something }
# Get the list of pending scripts to be eval'd ns_eval -pending
# Unset an array variable in all interpreters. ns_eval {{if {[info exists myGlobal]} {unset myGlobal}}} # The code that ends up being evaluated in each interpeter is: # if {[info exists myGlobal]} {unset myGlobal}
SEE ALSO
-