Only the topmost thread may execute and when it completes it is popped off the stack so that the next thread down can continue. The commands descriptions below include specification of local or non-local status. In addition, simulation steps and reset are by definition non-local operations if there is more than one node in the zone. Users are strongly encouraged to use only local operations in child threads whenever possible. This new thread is pushed on the thread stack and executed, so that the original waiting thread does not continue until the new thread has completed.
Scripts running on different nodes can synchronize via several different synchronization primitives.
By default there is an implicit zone-wide barrier before a simulation step is executed, although this can be disabled. Pairwise synchronization of nodes is also possible. When a script requests that a command be run asynchronously on another node it initiates a child thread of control on the other node. The child thread runs asynchronously with its parent. Threads do not block for child completion before each simulation step, nor at a barrier.