Considerations for using multiple threads
Go commands speak explicitly to the focus
thread and send an implicit Go to all other threads.
For
example, in a multithreaded environment with three threads named
@T1
, @T2
, @T3
,
and @T2
having focus, a Go Step command
would advance @T2
a single step. During this time,
threads @T1
and @T3
might advance
one or more steps depending on the scheduling policy of the underlying
operating system. In any case, when control returns to you, all three
threads have executed a whole number of steps (execution does not
stop in the middle of a step).Only active (not suspended) threads are advanced in a Go command. If the focus thread is suspended, the execution does not advance and you are prompted to either set the focus to another thread or resume the focus thread. If the focus thread dies during a Go Step, Go Event, or Go Idle command, the application immediately stops.