The showthread program displays the thread activity of a Modula-3 program.
Normally, you should not start showthread directly. Rather, the
runtime will start showthread and feed it with the proper
data when the argument @M3showthread is given to a Modula-3 program;
for example, to run the program foo and see the threads of that
process, run foo with the argument @M3showthread. A Trestle window
will appear; when you click the start button, the program foo
will actually start.
Each thread in the program will be given a vertical track in the
showthread window, in which the successive states of the thread will
be displayed, using color patches. After the thread dies, the track can
be reused for another thread.
Each time the scheduler decides to stop the currently running thread and
makes a decision about what to do next, showthread will add a new row
of color patches to show the state of all the threads.
The legend in the showthread window indicates which color is used for which
- running: currently running
- alive: can run, but is not currently running
- waiting: waiting for a condition to be signaled
- locking: waiting for a mutex to be released
- pausing: pausing for some time (via Time.Pause)
- blocking: waiting for I/O activity (via IOSelect)
- dying: the thread returned, but nobody joined it yet