Skip to content

The Threads Tool

The Threads Tool is used to monitor and debug multi-threaded applications. To display the Threads Tool, select Show Threads Tool from the Session Threads menu, or Threads from the Session pop-up menu.

The above picture illustrates a situation using the lift.dws workspace after executing the function RUN. The Pause on Error option was enabled and a Stop was set on RUN[63]. When RUN suspended at this point, all other threads (1-8) were automatically Paused. Note that all other threads happen to be Paused in the middle of calls to system functions

The columns of the Threads Tool display the following information.

Column Description
Tid The Thread ID ( ⎕TID ) and name ( ⎕TNAME ) if set
Location The currently executing line of function code
State Indicates what the thread is doing. (see below)
Flags Normal or Paused.
Treq The Thread Requirements ( ⎕TREQ )

Thread States

State Description
Pending Not yet running
Initializing Not yet running
Defined function Between lines of a defined function
Dfn Between lines of a dfn
Suspended Indicates that the thread is suspended and is able to accept input from the Session window.
Session Indicates that Session window is connected to this thread.
(no stack) Indicates that the thread has no SI stack and the Session is connected to another thread. This state can only occur for Thread 0.
Exiting About to be terminated
:Hold Waiting for a :Hold token
:EndHold Waiting for a :Hold token
⎕DL Executing ⎕DL
⎕DQ Executing ⎕DQ
⎕NA Waiting for a DLL (⎕NA) call to return.
⎕TGET Executing ⎕TGET, waiting for a token
⎕TGET (Ready to continue) Executing ⎕TGET, having got a token
⎕TSYNC Waiting for another thread to terminate
Awaiting request Indicates a thread that is associated with a .NET system thread, but is currently unused
Called .NET Waiting for a call to .NET to return.

Paused/Normal

In addition to the thread state as described above, a thread may be Paused or Normal as shown in the Flags column. A Paused thread is one that has temporarily been removed from the list of threads that are being scheduled by the thread scheduler. A Paused thread is effectively frozen.

Threads Tool Pop-Up Menu

Switch to Selecting this item causes APL to attempt to suspend (if necessary) and switch to the selected thread, connecting it to the Session and Debugger windows.
Interrupt Causes a (STRONG) interrupt in the selected thread the next time it is scheduled, essentially it allows you to target an interrupt at a specific thread.
Ignore Interrupts Allows you to specify that the selected thread should ignore weak interrupts.
Refresh Now Refreshes the Threads Tool display to show the current position and state of each thread.
Auto Refresh Selecting this item causes the Threads Tool to be updated continuously, so that it shows the latest position and state of each thread.
Pause Threads on Error If this item is checked, APL automatically Pauses all other threads when a thread suspends due to an error or an interrupt.
Paused This item toggles a thread between being Paused and Normal . It Pauses a Normal thread and resumes a Paused thread.
Pause All This item causes all threads to be Paused .
Resume All This item resumes all threads.
Restart All This item resumes all Paused threads, restarts all suspended threads, and closes the Debugger.