threadutil.pl -- Interactive thread utilities
This library provides utilities that are primarily intended for interactive usage in a threaded Prolog environment. It allows for inspecting threads, manage I/O of background threads (depending on the environment) and manipulating the debug status of threads.
- threads
- List currently known threads with their status.
- join_threads
- Join all terminated threads.
- interactor is det
- interactor(?Title) is det
- Run a Prolog toplevel in another thread with a new console window. If Title is given, this will be used as the window title.
- thread_run_interactor
- Attach a console and run a Prolog toplevel in the current thread.
- thread_has_console is semidet
- True when the calling thread has an attached console.
- attach_console is det
- attach_console(?Title) is det
- Create a new console and make the standard Prolog streams point to it. If not provided, the title is built using the thread id. Does nothing if the current thread already has a console attached.
- open_console(+Title, -In, -Out, -Err) is det[private]
- Open a new console window and unify In, Out and Err with the input, output and error streams for the new console.
- xterm_args(-List) is nondet[multifile]
- Multifile and dynamic hook that provides (additional) arguments for
the
xterm(1)
process opened for additional thread consoles. Each solution must bind List to a list of atomic values. All solutions are concatenated using append/2 to form the final argument list.The defaults set the colors to black-on-light-yellow, enable a scrollbar, set the font using Xft font pattern and prepares the back-arrow key.
- enable_line_editing(+In, +Out, +Err) is det[private]
- Enable line editing for the console. This is by built-in for the
Windows console. We can also provide it for the X11
xterm(1)
based console if we use the BSD libedit based command line editor. - detach_console(+ThreadId) is det[private]
- Destroy the console for ThreadId.
- tspy(:Spec) is det
- tspy(:Spec, +ThreadId) is det
- Trap the graphical debugger on reaching Spec in the specified or any thread.
- tdebug is det
- tdebug(+Thread) is det
- Enable debug-mode, trapping the graphical debugger on reaching spy-points or errors.
- tnodebug is det
- tnodebug(+Thread) is det
- Disable debug-mode in all threads or the specified Thread.
- tprofile(+Thread) is det
- Profile the operation of Thread until the user hits a key.
- init_pce[private]
- Make sure XPCE is running if it is attached, so we can use the graphical display using in_pce_thread/1.
- interactor is det
- interactor(?Title) is det
- Run a Prolog toplevel in another thread with a new console window. If Title is given, this will be used as the window title.
- attach_console is det
- attach_console(?Title) is det
- Create a new console and make the standard Prolog streams point to it. If not provided, the title is built using the thread id. Does nothing if the current thread already has a console attached.
- tspy(:Spec) is det
- tspy(:Spec, +ThreadId) is det
- Trap the graphical debugger on reaching Spec in the specified or any thread.
- tdebug is det
- tdebug(+Thread) is det
- Enable debug-mode, trapping the graphical debugger on reaching spy-points or errors.
- tnodebug is det
- tnodebug(+Thread) is det
- Disable debug-mode in all threads or the specified Thread.