Default threading model of a Prolog program

I think this is no longer true :slight_smile:

Yes. By default SWI-Prolog uses two threads: main and gc. The first is your application, the second does atom and clause garbage collection. If you run the development tools such as gtrace/0 or PceEmacs, a pce thread is added that does the GUI so you can edit, examine resource usage, etc. while your application is running.

Using swipl --no-threads it runs completely single threaded. There are very few use cases for that. You can also build a single threaded version from the sources. That makes the core a little smaller and marginally faster.

1 Like