Chapter 7 Engines and Threads
Starting with release 7.0, ECLiPSe supports multiple engines and
multi-threaded execution.
An engine is an entity with its own data areas and
potentially independent control flow. This implies:
-
engines can execute queries independently of each other
- each engine has its own search tree, backtracking in one engine does not affect others
- engines can operate in a concurrent or interleaved fashion
- communication between engines is explicit
- data transferred between engines is copied, variables cannot be shared
On the other hand, engines share or can share the following:
-
loaded modules and predicates
- non-logical storage such as global variables, records, stores, shelves
- global settings (set_flag/2,3)
- streams
An engine can optionally be associated with a thread,
allowing it to execute concurrently with other engines.
For more details, see the
Reference Manual Section on Engines.