Concurrent programming constructs in multi-engine prolog
Paul Tarau · 2011
We discuss the impact of the separation of logic engines (independent logic processing units) and multi-threading on the design of parallel programming constructs aware of the fundamental invariant of today's typical computer architectures: the presence of a few independent cores. We advocate a combination of coroutining constructs with focus on expressiveness and a simplified, multi-threading API that ensures optimal use of a desired number of cores. In this context, native multi-threading is made available to the application programmer as a set of high-level primitives with a declarative flavor.