[semidet]concurrent_maplist(:Goal,
+List)
[semidet]concurrent_maplist(:Goal,
+List1, +List2)
[semidet]concurrent_maplist(:Goal,
+List1, +List2, +List3)Concurrent version of maplist/2.
This predicate uses concurrent/3,
using multiple worker threads. The number of threads is the
minimum of the list length and the number of cores available. The number
of cores is determined using the prolog flag cpu_count
. If
this flag is absent or 1 or List has less than two elements,
this predicate calls the corresponding maplist/N version using a wrapper
based on once/1. Note
that all goals are executed as if wrapped in
once/1 and therefore
these predicates are semidet.
Note that the the overhead of this predicate is considerable and
therefore Goal must be fairly expensive before one reaches a
speedup.