Maybe someone should try it without any sort of optimizing algorithm. If massive mult-core is in the future, then I'd be interested to see how even a dumb implementation works. How about a Lisp where every variable clause of a let (not let*, obviously) is evaluated on a different core if the assignment is a function call, and where the body of the let statement runs once they've all returned.Even if the runtime of each task was known, optimal multi-core scheduling is NPC iirc../SNIP/...the best we can do is simple heuristic algorithms.
Code: Select all
(let ((a (calc-something ...)) (b (calc-something-else ...)) (c (calc-another-thing ...))) ;; once each of the above calc- calls have returned, then continue (+ a b c))