On Monday, 28 May 2018 at 21:04:21 UTC, Dr.No wrote:
                import std.parallelism : parallel;
                foreach(t; parallel(arr))
                {
                        if(!doSomething(t)) {
                                return false;
                        }
                }

It reuturns the run time error:

std.parallelism.ParallelForeachError@(0): Cannot break from a parallel foreach loop using break, return, labeled break/continue or goto statements.

What's the proper way to break from loop?

you can't break out because other tasks would still continue to finish while the loop is breaking. So either you could use `throw` to error out or you could simply create a `bool isDone;` and at the start of the loop do `if (isDone) continue;` to make all next tasks finish quickly (though CPU usage will be very high for a moment, depending on the list size)

If you want total control and break manually (with an uncertainty of a few iterations) you can probably create a custom taskPool and use the .stop member function on it.

See https://dlang.org/phobos/std_parallelism.html

Reply via email to