review of std.parallelism
Michel Fortin
michel.fortin at michelf.com
Sat Mar 19 11:35:56 PDT 2011
On 2011-03-19 13:16:02 -0400, dsimcha <dsimcha at yahoo.com> said:
>> * "A goto from inside the parallel foreach loop to a label outside the
>> loop will result in undefined behavior." Would this be a bug in dmd?
>
> No, it's because a goto of this form has no reasonable, useful
> semantics. I should probably mention in the docs that the same applies
> to labeled break and continue.
>
> I have no idea what semantics these should have, and even if I did,
> given the long odds that even one person would actually need them, I
> think they'd be more trouble than they're worth to implement. For
> example, once you break out of a parallel foreach loop to some
> arbitrary address (and different threads can goto different labels,
> etc.), well, it's no longer a parallel foreach loop. It's just a bunch
> of completely unstructured threading doing god-knows-what.
>
> Therefore, I slapped undefined behavior on it as a big sign that says,
> "Just don't do it." This also has the advantage that, if anyone ever
> thinks of any good, clearly useful semantics, these will be
> implementable without breaking code later.
I think an improvement over undefined behaviour would be to throw an exception.
Also, what happens if one of the tasks throws an exception?
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list