On Tuesday, 10 March 2015 at 22:11:57 UTC, Dennis Ritchie wrote:
On Tuesday, 10 March 2015 at 21:27:42 UTC, Dennis Ritchie wrote:
Thanks.

No, it does not suit me, because of the parallel array in a foreach loop there is no break.

import std.stdio;
import std.algorithm;
import std.parallelism;

void main() {

        int b = 2;

        auto a = [1, 2, 2, 3];

        if (find(a, b).length != 0)
                writeln("Yes_");

        foreach (elem; a.parallel)
                if (elem == b)
                        writeln("Yes");               // prints "Yes" twice
}

Just add a condition variable.

import std.stdio;
import std.algorithm;
import std.parallelism;

void main() {

        int b = 2;

        auto a = [1, 2, 2, 3];

        if (find(a, b).length != 0)
                writeln("Yes_");
        
        auto found = false;

        foreach (elem; a.parallel)
                if (!found && elem == b)
                {
                        writeln("Yes");
                        found = true;
                }
}

This program pints:

Yes_
Yes

Reply via email to