On Thursday, 30 August 2018 at 19:59:17 UTC, Dr.No wrote:
I would to process the current block in parallel but priting
need to be theread-safe so I'm using
foreach(x; parallel(arr)) {
auto a = f(x);
auto res = g(a);
synchronized {
stdout.writeln(res);
stdout.flush();
}
}
Since f() and g() are some heavy functions, I'd like to process
in parallel but the printing (doesn't need to respect order but
must be thread-safe) hence I'm using synchronized. Is this
counter-productive in any way?
I don't see any problem with that assuming f and g are
significantly more expensive than writeln. The flush can be moved
outside the synchronized block.