so I'im doing an expansive operation with a file, to try speed
up, i switch to using parallel but keeping in the otuput printing
thread-safe. But for some reason, even using synchonized, it
doesn't work as expected, for example, it output multiples
results on same time, as in the example below.
the code:
stdout.flush();
foreach(string fn; parallel(files))
{
auto res = doSomething(fn);
synchronized
{
stdout.writefln("outjson = %s", res.serializeToJson);
stdout.flush();
}
}
the expeced output is like that (one per line):
outjson = {"barCode":"XXXX1","ade":"1"}
outjson = {"barCode":"XXXX2","ade":"2"}
outjson = {"barCode":"XXXX3","ade":"3"}
// and so on...
But it in the middle of output, I got output like this:
outjson = {"barCode":"XXXX20","ade":"20"}♪◙outjson =
{"barCode":"XXXXX21","ade":"21"}
also there's that extra ♪◙ character. Thos sounds memory
violation somewhere.
This only happens when using parallel. Any guess what's possibily
happeing?