File.lockingBinaryWriter

auto lockingBinaryWriter()

Returns an output range that locks the file and allows fast writing to it.

Example: Produce a grayscale image of the Mandelbrot set in binary Netpbm format to standard output.

import std.algorithm, std.complex, std.range, std.stdio;

void main()
{
   enum size = 500;
   writef("P5\n%d %d %d\n", size, size, ubyte.max);

   iota(-1, 3, 2.0/size).map!(y =>
       iota(-1.5, 0.5, 2.0/size).map!(x =>
           cast(ubyte)(1+
               recurrence!((a, n) => x + y * complex(0, 1) + a[n-1]^^2)(complex(0))
               .take(ubyte.max)
               .countUntil!(z => z.re^^2 + z.im^^2 > 4))
       )
   )
   .copy(stdout.lockingBinaryWriter);
}