Finally, the functional program. Random bytes are now collected by the
main thread at the start of each iteration. Worker threads repeatedly
write the data to disk. On each iteration, the size of the data is
doubled, up to a maximum size of 32 megabytes. When the program
terminates, the generated files are removed.