Isolate compute and I/O version. Read and writes are overlaped but compute is not.
No need of condition variables or locks.