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