Since all entries are cached in the system cache by default, it does little to overlap I / O or create a separate stream for writing at all. Most WriteFile calls are kernel-only memcpys, which are lazily written to the OS disk in an optimal way with other messages.
You can, of course, disable buffered I / O via the flags for CreateFile, and then there are advantages to performing any asynchronous I / O - but you probably did not / should not.
Edit
The OP clarified that they actually use unbuffered I / O. In this case, the two proposed solutions are almost identical; internally, Windows uses a thread pool to serve asynchronous I / O requests. But hypothetically, Windows may be more efficient because half of them are implemented in the kernel, fewer context switches, etc.
Terry maffaffey
source share