Again, pointless in the big picture. Most of the time these details are hidden by libraries.
Anyways given extremely high syscall cost due to Meltdown workarounds, batching multiple operations makes more and more sense.
Except for when they're not, or those libraries don't expose the "one little implementation detail", and a platform hack sneaks in, and _thats_ how we end up with "well it works fine on windows and we use asio so shrug". Unfortunately games are really bad for doing this in my experience (and I'm guilty of doing it on occasion too).
At least finally Linux is also getting completion based IO with io_uring.
Not identical to io_uring, but close enough that porting between them will probably be quite simple.
The competition triggered part is what was already there.