The Overlap operation in Microsoft Windows no longer means asynchronous in all other OS languages.
To adhere to your example, you start reading on the socket and do not expect success, but you are doing something completely different (maybe you are reading in another (!) Socket). Then ask if the first operation is completed. You can also set an event descriptor for this. Or give the CALLBACK function, which is called upon completion. In this case, the first call "blocks" the rest of your operations.
See also on wikipedia .
My suggestion why Microsoft (was) calling it overlapping is that it does not look like the start of a thread, it is more like starting an async task when there was no standard name for it. This is more like std::async than std::thread .
source share