Stating the obvious, asynchronous programming is not something new. I will not go too far, so I will use the Windows messages as example. Every time we use the PostMessage function we are dealing with asynchronous execution. That is, we post a message requesting some action to be done and, in the most common situation, this message is queued to be executed later by the same thread. It is asynchronous because the next statement after the PostMessage is actually going to execute before that message is processed.