These features add a task-based model for performing asynchronous operations.
In addition to the kernel-assigned identifier, one of the arguments given to any asynchronous operation was a 32-bit user-assigned identifier.
Finding location is an asynchronous operation as it requires the user's permission for access.
A real solution would be to support brain-dead simple asynchronous operations.
These are implemented as "perform the actual asynchronous operation" followed by "wait until the operation sets the event flag".
A few Windows-specific extensions were added, mainly for asynchronous operations with message-based notifications.
The first public release was 1.20, which allowed for symmetric and transparent RPC, but not for asynchronous operation.
It provides only a single threaded programming model, though certain operations (such as network and persistent storage access) are executed as asynchronous operations.
Implementation of asynchronous operation is hardware dependent.
There will also be pervasive support for asynchronous operations, providing a clean and consistent way to do long-running tasks in the background.