The main environment subsystem is the Win32 subsystem. In addition to being able to run Win32 applications, this subsystem manages keyboard and mouse input and screen output for all subsystems.
The Win32 subsystem is responsible for collecting all user input (or messages, in this message-driven environment) and delivering it to the appropriate applications. The Win32 input model is optimized to take advantage of the Windows NT preemptive multitasking capabilities. Figure 1.14 shows how the Win32 subsystem handles input for Win32 and 16-bit Windows-based applications.
Figure 1.14 Win16 (Synchronized) and Win32 (Desynchronized) Input
Win32 uses a desynchronized input model for Win32 applications and the synchronized input for 16-bit Windows-based applications.
For example, when the Win32 subsystem receives a message for a Win32 application, it stores the message in a single raw input queue. As soon as it can, the Win32 subsystem transfers the message to the input queue thread for the appropriate Win32 application. If the input queue thread stops retrieving its messages, no other Win32 applications are affected.
By contrast, all input messages for 16-bit Windows-based applications sit in a common queue. At any point in time, all applications except the one retrieving messages from the input queue are blocked. However, as with Windows 3.1, if the executing application has some problem with retrieving messages from the queue, or it does it very slowly, the remaining applications stay blocked.