When started, the Workplace process' first thread becomes the User-interface thread. The User-interface thread is the one responsible for monitoring the Workplace Shell's PM message queue and dispatching the appropriate actions based on which messages come through. The User-interface thread is the one that most noticeably affects the user's perception of response time. Therefore, it is mandatory that only the minimum amount of processing takes place on that thread. There are a set of other threads that are also started at different times during the lifetime of the Workplace process. There are divided into two major categories:
The following diagram shows the Shell and Workplace process and their threads. The asterisk (*) indicates the transient threads.
Shell Process ÚÄÄÄÄÄÄ Workplace Process ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ Mandatory Threads: ³ ³ ³ Launches ³ Object Thread ³ ³ Starter Thread ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÙ ³ Lazy Writer Thread ³ ³ Shutdown Thread* ³ ³ Sleepy Time Thread ³ ³ ³ ³ Wheel Watcher Thread ³ ³ ³ ³ Process Queue Thread ³ ³ ³ ³ Ager Thread ³ ³ ³ ³ ³ ³ ³ ³ Transient Threads: ³ ³ ³ ³ Populate Thread* ³ ³ ³ ³ Asynch Refresh Thread* ³ ³ ³ ³ Add First Child Thread* ³ ³ ³ ³ Vacate Folder Thread* ³ ³ ³ ³ Tasking Thread* ³ ³ ³ ³ Printer Thread* ³ ³ ³ ³ Finder Thread* ³ ³ ³ ³ ³ ³ Specified by ³ ³ Specified by ³ ³ PROTSHELL ³ ³ RUNWORKPLACE ³ ³ (PMSHELL.EXE) ³ ³ (PMSHELL.EXE) ³ ÀÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ Launches Launches Launches ³ ³ ³ Appl. 1 Appl. 2 Appl. n Process Process Process ÚÄÄÄÁÄÄÄÄ¿ ÚÄÄÄÁÄÄÄÄ¿ ÚÄÄÄÁÄÄÄÄ¿ ³APP1.EXE³ ³APP2.EXE³ ³APPn.EXE³ ÀÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÙ