a process is a loaded instance of an application and a thread is an executable unit of code that can be scheduled by the kernel dispatcher. Thus, a process contains one or more threads. A process is created when a thread in some other process calls the CreateProcess O API. This routine loads any dynamic link libraries used by the process and creates an initial thread in the process. Additional threads can be created by the CreateThread function. Each thread is created with its own stack, which defaults to 1 MB unless otherwise specified in an argument to CreateThread