Whenever we run a program, the moment that it is loaded from the hard disk (or any other storage) into the memory, it becomes a process. A process is executed by a processor, and for its execution, it requires a program counter (PC) to keep track of the next instruction to be executed, the CPU registers, the signals, and so on.
A thread refers to a set of instructions within a program that can be executed independently. A thread has its own PC and set of registers, among other things. In that way, a process is comprised of several threads. Two or more threads can share their code, data, and other resources, but special care must be taken when sharing resources among threads, as it might lead to ambiguity and deadlock. An operating system also manages a thread pool.
A thread pool contains a collection of threads that are waiting for tasks to be allocated...