This post mainly talks about thread, including the thread definition, thread types and difference between process and thread.
What is Thread
If you are a programmer, you must be familiar with writing sequential programs. Actually, many of developers are exposed to threads and processes over their careers, but they don’t clear the working principle of them. You will be clear about it after reading this post of MiniTool.
A list of names or prime numbers in computer are sequential programs. Each one of them has a beginning, an execution sequence, and an end. There is a single point of execution at any given time during the running process of the program.
The thread is similar to the sequential programs mentioned above. That is to say a single thread has a beginning, a sequence, and an end too. Besides, it also has a single point of execution at any appointed time during the running process of the thread.
However, you need to know that the thread itself is not a program and is unable to run on its own. It can run within a program. How to define thread? Simply put, a thread is a single sequential flow of control within a program, which is a part of the operating system. That is the thread definition.
A thread of execution is the smallest sequence of programmed instructions, which is under the charge of scheduler. While a process contains multiple threads. The thread is also known as lightweight process. That is because it runs within the context of a full-blown program and makes use of the resources allocated for the program and its environment.
The idea to achieve parallelism is by separating a process into multiple threads. For instance, within a browser, you can play animation and sound concurrently, print a page in the background while downloading a new page, and do other things at the same time.
Compare Thread and Process
The main difference between thread and process is that threads within the same process run in a shared memory space, while process runs the different memory spaces. Besides, unlike processes, threads are not independent.
The implementation of threads and processes varies between operating systems, but a thread is an element of a process in most circumstances.
Recommended article: 6 Ways to Quickly Fix System Thread Exception Not Handled BSOD
Therefore, threads share their code section, data section, as well as OS resources with other threads. A thread has its own program counter, register set and stack space, which is similar to the process. In addition, thread has other advantages over process.
- Responsiveness: If a process is divided into multiple threads and each thread finishes its execution, the output of the process can be returned very quickly.
- Quicker context switch: Compared with process context switch, the time for thread context switch is shorter. That is because process context switching needs more overhead from the CPU.
- High efficiency to utilize multiprocessor: If there are multiple threads in a single process, they can be scheduled on multiple processors. By doing so, the execution process more quickly.
- Sharable resource: Resources such as code, data, and files can be shared among all threads in one process.
- Communication: As threads share common address space, it is very easy to communicate with multiple threads. However, you have to follow some specific communication techniques for communication in process.
- Improved throughput of the system: If a process is divided into multiple threads and each thread function is regarded as a job, then the amount of jobs finished per unit of time is increased, and the whole throughput of the system is increased.
Two Types of Thread
Threads can be divided into two types (user level thread and kernel level thread). To give you an intuitive vision, I will show the two types of thread in a table form.
User Level Thread | Kernel Level Thread |
implemented by users | implemented by OS |
OS doesn’t recognize user level threads | can be recognized by OS |
easy to implement | hard to implement |
context switch time is less | context switch time is more |
context switch requires no hardware support | context switch requires hardware support |
If a user level thread performs blocking operation, the whole process will be blocked. | If a kernel level thread performs blocking operation, another thread can continue the execution process. |
After reading the table, you can know which thread you are utilizing according to its features. What is a thread? You must have answers now. Additionally, difference between process and thread and types of thread also have been told you.