A thread, from the perspective of interactions with other threads, is divided into two kinds: non-blocking thread and blocking thread. A non-blocking thread is usually a thread that does not block any other thread.
A blocking thread means a thread that does operations that often force the execution context to wait for other operations. By nature, in this context of operations, there can be many kinds of operations and interactions with other kinds of subsystem components such as I/O and CPU thread counter such as the operation performed in
I/O is never separated from the implementation and usage of our application, ...